django操作数据库 ORM
一,数据库连接
创建类
a. 在models.py中先写类
from django.db import models
# 表名是app01_userinfo
class UserInfo(models.Model):
# id列,自增,主键
# 用户名列,字符串类型,指定长度
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
b. 注册APP,settings中加入app名称
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
c,选定数据库 用sqlite3还是mysql
DATABASES = {
'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbname', 'USER': 'root', 'PASSWORD': 'xxx', 'HOST': '', 'PORT': '', } } d. 执行命令,
python manage.py makemigrations
python manage.py migrate
********** 注意 ***********
Django默认使用MySQLdb模块链接MySQL,也可安装mysqlclient,https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
import pymysql
pymysql.install_as_MySQLdb()
二,数据库增删查改
models: from django.db import models # Create your models here. class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=64) views: from cmbd import models
def orm(request): #创建 插入行
#第一种方法
# models.userinfo.objects.create(username="root",password=123)
#第二种方法
# dic = {"username":"eric","password":123}
# models.userinfo.objects.create(**dic)
#第三种方法
# obj = models.userinfo(username="alex",password=666)
# obj.save() #查询
#result = models.userinfo.objects.all() #返回结果是django内置类,相当于结果列表,查询所有
# result = models.userinfo.objects.filter(username="root",password='123') #按条件与查询,后面还可跟.first() .last() .count()第一个最后一个,共几个
# for row in result:
# print(row.id,row.username,row.password) #更新
# models.userinfo.objects.update(password=669) #更新所有列的密码
# models.userinfo.objects.filter(id=1).update(password=69) #按条件更新 #删除
# models.userinfo.objects.filter(id=2).delete() #删除id为2的行 return HttpResponse('ok')
三,修改表结构
modules中 from django.db import models
class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=60)
email = models.EmailField(max_length=60)
favior = models.CharField(max_length=12,null=True) 直接在上面修改max_length=12,加一行即一个字段,删除一行即删除这个字段,
然后 python manage makemigrations ;python manage migrate
四,字段,参数,元信息等,详见 http://www.cnblogs.com/wupeiqi/articles/5246483.html
字段: django中的 EmailFiled,DateTimeField等其实是django的限制,在mysql中还是字符串类型
字符串类型
数字
时间
二进制
自增(primary_key=True) 字段的参数:
null -> db是否可以为空
default -> 默认值
primary_key -> 主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->
unique_for_month
unique_for_year
auto_now_add -> 创建时,自动生成时间,保持不变
auto_now -> 更新时间,更新时自动更新为当前时间 # obj = UserGroup.objects.filter(id=1).update(caption='CEO') 这种操作不支持,不会更新,更新时间,以下操作才支持
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save() choices -> django admin中显示下拉框,避免连表查询
blank -> django admin是否可以为空
verbose_name -> django admin显示字段中文
editable -> django admin是否可以被编辑
error_messages -> 错误信息欠
help_text -> django admin提示
validators -> django form ,自定义错误信息(欠) 创建 Django 用户:python manage.py createsuperuser
choices 举例,在数据库中user_type_id存放的是数据 ,但是django后台是显示用户类型汉字 class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=60)
email = models.EmailField(max_length=60)
user_type_choice = (
(1,'超级用户'),
(2,'管理员'),
(3,'普通用户'),
)
user_type_id = models.IntegerField(choices=user_type_choice,default=3)
django操作数据库 ORM的更多相关文章
- django 操作数据库--orm(object relation mapping)---models
思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...
- django之数据库orm
一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sq ...
- Django之 数据库ORM
一.ORM Django的 业务 少不了 跟数据库打交道,不然没有数据库保存一些数据将是一件很糟糕的事情.Django 对 数据库 支持原生的 SQL语句,但更好的对数据库支持,Django自己有一套 ...
- django操作非ORM创建的表
问题:django的ORM怎么连接已存在的表,然后进行增删查改操作? 工作中会遇见很多二次开发的时候,表都是已经创建好的,用django的ORM进行二次开发,怎么操作数据库中的表呢? 下面介绍 ...
- 关于python+django操作数据库中的表
数据库中的表示这样设计的 class C(models.Model): name = models.CharField(max_length=32) class B(models.Model): na ...
- django_4:数据库1——django操作数据库
创建数据库记录(插入) 使用python3 manage.py shell(python3亲测好使) ipython3 manage.py shell(亲测不好使) 方式一. [root@centos ...
- Django之数据库--ORM
一.建立数据库模型类 1.在model里创建模型类.(继承models.Model) from django.db import models # Create your models here. c ...
- 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?
(注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...
- django操作数据库之查询F,Q操作 和 seach搜索功能
# F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) # Q 构建搜索 ...
随机推荐
- TensorFlow 官方文档中文版 --技术文档
1.文档预览 2.文档下载 TensorFlow官方文档中文版-v1.2.pdf 提取码:pt7p
- port 执行命令的封装和参数详解
下面代码摘自rebar_utils.erl -module(tt7). %-export([start/0]). -compile(export_all). -define(FAIL, abort() ...
- Python 小节回顾
1.python程序是大小写敏感. 2.python中字符串是用单引号 ' 或双引号 " 括起来的任意文本. python中用 r ' ' 表示 ' ' 内部的字符串不转义. 3.在pyt ...
- EL函数库及用法
导入标签库: <%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%&g ...
- Python requests代理
self.ip=requests.get('http:ip获取') self.ip=(self.ip.text).replace('\r','').replace('\n','') print('IP ...
- netty-socketio(一)之helloworld,与springboot整合
netty-socketio是一个开源的Socket.io服务器端的一个java的实现, 它基于Netty框架. 1.参考资料 (1)netty-socketio项目github地址: https:/ ...
- python----集合用法总结
集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据集合的作用:1.它可以把一个列表中重复的数据去掉,而不需要你再写判断2.可以做关系测试,比如说有两个班 ...
- Python3+SQLAlchemy+Sqlite3实现ORM教程
一.安装 Sqlite3是Python3标准库不需要另外安装,只需要安装SQLAlchemy即可.本文sqlalchemy版本为1.2.12 pip install sqlalchemy 二.ORM操 ...
- 把旧系统迁移到.Net Core 2.0 日记 (20) --使用MiniProfiler for .NET
要查看页面耗时,EFCore的性能. 安装 MiniProfiler.AspNetCore.Mvc 还有 MiniProfiler.EntityFrameworkCore Install-Packa ...
- 数据分析---SQL(Access数据库)
1. SQL(Structure Quest Language) 一种结构化查询语言,它是一种通用的关系型数据库操作语言,用于存取数据,查询,更新和管理数据库. 2. 基本语句 Select, Cre ...