django的ORM
一.在models.py创建模型
class Book(models.Model): # 表名就是app名_类名 id = models.AtuoField(primary_key=Ture)
1. 字段
CharField(max_length=32) 字符串字段,最大32个字符
IntegerField() 整数
FloatField(max_digits=8,decimal_places=2) 浮点数总长8位,小数占两位
AtuoField(primary_key=Ture) 自增字段,并设置为主键
BooleanField() 布尔值字段
DateField(atuo_now_add) 日期字段,atuo_now_add是首次创建的时间
DateFiled(atuo_now) 日期时间字段,atuo_now是每次更新的时间
2. 参数
null 针对数据库的,如果为ture,表示该字段可以为空
blank 针对表单的,如果为ture,该字段可以为空,与数据库无关
default 字段的默认值,可以是一个值或者可调用对象
primary_key 设置主键
unique 如果为ture,该字段的值就是唯一的
atuo_now 每次更新数据的时间
atuo_now_add 首次创建数据的时间
二. settings配置
1. mysql引擎的配置
# mysql的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'USER': "root", # 连接数据库的用户名 'PASSWORD': "mysql123", # 连接数据库的密码 'NAME': "lms", # 连接的数据库库名 'HOST': "127.0.0.1", # 连接主机 'PORT': 3306, # 端口 } } INSTALLED_APPS = [ 'app01.apps.App01Config', #第一种写法 'app01' # 第二种写法 ]
2. 导入MySQLdb模块
import pymsql pymysql.install_as_mysqldb()
3. 两条数据库迁移指令
python manage.py makemigrations 生成记录文件
python manage.py migrate 创建表,生成表名为 app名_类名(创建模型时的类)
三. ORM单表的增删改查
先导入表 from app import models
models.类名.objects 获取到表对象
1. 增
①models.类名.objects.create(字段) # 推荐
②obj = models.类名(字段)
obj.save()
2. 删
models.类名.objects.filter(id=1).delete() 删除id=1 的那条数据
3. 改
models.类名.objects.filter(id=1).update(字段) 更改id=1的那条数据
4. 查
models.类名.objects.all() 返回一个装有对象的列表
四. ORM执行原生sql语句
1. 执行原生sql语句,返回的还是models对象
objects.raw("select * from table") 返回的是一个类似于queryset的对象
2. 直接执行自定义sql,返回的结果和mysql的一样
from django.db import connection ,connections
cursor = connection.cursor() 和pymsql一样
cursor.execute(sql语句)
五. 脚本中调用django环境
import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE","项目名.settings") import django django.setup() from app import models # 引入