2021/6/17 ORM

连接数据库
databases = {
'default': {
'engine': 'django.db.backends.mysql',
'name': '',
'user': '',
'password': '',
'host': '',
'port': ,
'charset': ''

}
}
__init__.py
import pymysql
pymysql.install_as_MySQLdb()
ORM基础语法
凡是返回queryset对象的,都可以继续链式操作,使用queryset方法
类 --》 表
对象 --》 记录
对象属性 - 记录的字段值
在models.py写入
from django.db import models
class xxx(models.Model):
属性 = models.字段名(参数)
在终端激活
python manage.py makemigrations
python manage.py migrate
常用字段及参数
IntegerField()
CharField(max_length=32)
AutoField(primary_key=True)
DateField()
DateTimeField()
auto_now=True
auto_now_add=True
BooleanField()
FileField()
DecimalField()
max_digit=
decimal_places=
EmailField()
TextField()

null=True
unique=True
db_index=True
blank=True
primary_key=True
default=''
verbose_name=''
auto_now=True
auto_now_add=True
max_length=
choices=choices变量名
queryset对象.get_choices变量名_display()

OneToOneField()
ForeignKey()
ManyToManyField()
to=''
to_field=''
to_delete=models.
set(值/func)
set_default
set_null
cascade
do_nothing
protect
db_constraint=True
through=''
through_fields=('','')

记录操作
queryset对象:filter/all/exclude/order_by/reverse/distinct()
values/values_list()
记录对象:first/last/get()
exists()
count()
查看sql语句
queryset对象.query
在settings.py放入一段代码

测试脚本
import os
if __name__ == '__main__':
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '目录名.settings')
import django;django.setup()
from app import models
创建表关系
多对多
全自动
models.ManyToManyField(to='')
全手动
手动构建第三章关系表,在关系表内使用foreignkey来进行外键关联
不可以使用ORM提供的跨表操作的任何方法
半自动
models.ManyToManyField(to='',through='',through_fields=())
不可以使用add、set、remove、clear
如果ForeignKey设置了null=True,则可以使用remove、clear
关联表查询
基于对象
正向
1 vs 1
a = models.xxx.objects.first()
a.key
1 vs n
a = models.xxx.objects.first()
a.key
n vs n
a = models.xxx.objects.first()
a.key.all()
反向
1 vs 1
a = models.xxx.objects.first()
a.表名小写
1 vs n
a = models.xxx.objects.first()
a.表名小写_set.all()
n vs n
a = models.xxx.objects.first()
a.表名小写_set.all()
基于双下划线
正向
models.xxx.objects.filter(key__字段名='')
models.xxx.objects.values('key__字段名')
反向
models.xxx.objects.filter(表名小写__字段名='')
models.xxx.objects.values('表名小写__字段名')
关联表操作
create
update
delete

add()
set()
remove()
clear()
上一篇:2021-05-09


下一篇:吉特仓库管理系统-ORM框架的使用