django的orm(模型model)
创建的模型(model)的步骤:
1.需要创建一个数据库
2.在settings中配置连接数据库的信息:
3.在对应的app中的__init__文件下面:
import pymysql
pymysql.install_as_MySQLdb()
4.还需要在settings里的INSTALL_APPS中将对应app添加进去
orm基本的增删改查
1.创建表
一个类对应一个表,比如新键一个用户类,可以使用继承django中的models.Model来新键
对应字段设置为对象,比如id可以通过models.AutoField设置为自增整形类型,name可以通过models.CharFeild设置为varchar类型。
再将类转化为实际的表,通过2个命令
python manage.py makemigrations ### 生成迁移文件
python manage.py migrate ### 生成实际的表
2.增删改查
单表:
查询
models.UserInfo.objects.all()
#<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>
models.UserInfo.objects.values("name", 'age')
#<QuerySet [{'name': 'wdr', 'age': '18'}, {'name': 'sima', 'age': '16'}]>
models.UserInfo.objects.values_list('name','age')
#<QuerySet [('wdr', '18'), ('sima', '16')]>
models.UserInfo.objects.first()
#查询到的第一个对象UserInfo: UserInfo object
models.UserInfo.objects.filter(id=1).first()
#用filter加条件进行筛选查询,若想要查询id>3的可以通过id__gt=3来设置便可,如果不加条件相当于all()
增加
models.UserInfo.objects.create(name='wjk',age='19',ut_id=1)
#或者用可变长形参形式将字典打散为关键字传入方式写入
删除
models.UserInfo.objects.filter(id=4).delete()
更新
models.UserInfo.objects.filter(id=3).update(name='yyqx')
一对多连表的操作:
正向查询
res=models.UserInfo.objects.all()
for obj in res:
print(obj.name,obj.age,obj.ut.title)
#### 神奇双下划线
models.UserInfo.objects.values('name', 'age', 'ut__title')
models.UserInfo.objects.values_list('username', 'age', 'ut__title')
反向查询
res = models.UserType.objects.first()
obj = res.userinfo_set.first()
# 通过表名小写_set反向查询这个表内信息
用表名小写__字段名
models.UserType.objects.values("title", 'userinfo__id', 'userinfo__age', 'userinfo__name')