Django中的ORM操作
1、ORM的功能
操作表:创建表、修改表。SqlAlchemy不能修改表。删除表。
操作数据行:增删改查。
Django必须利用pymysql等工具链接数据库。
2、连接设置
设置:settings.py中的DATABASES:
推荐:cnblogs的python之路
Django不能创建数据库,但是可以创建表格。
DATABASES = {
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'dbname',
'USER':'root',
'PASSWORD':'xxx',
'HOST':'',
'PORT':'',
}}
和project同名的文件夹中的_init_.py中加入:
import pymysql
pymysql.install_as_MYSQLdb()
这样就修改默认的MySQL引擎为pymysql
3、创建models的类
在app的models.py中:
from django.db import models
class UserInfo(models.Model):
nid = models.BigAutoField(primary_key=True) #默认会生成id列,自增型
username = models.CharField(max_length=32)
password = modesl.charField(max_length=64)
在settings.py中注册app:
INSTALL_APPS的最后增加:
'app01',
4、创建数据库表格(这两个命令要熟记)
python manage.py makemigrations
python manage.py migrate
5、修改表的方法
修改class定义,重新执行上述两条命令。
age = models.IntegerField(null=True)
或者
age = models.IntegerFiedl(default = 1)
即在数据表格有数据的情况下增加列,必须设置新列可以为null或者设置默认值。
5、设置外键
在类中增加一列:
usergroup = models.FreignKey("UserGroup",null=True)
会自动生成usergroup_id列,对应UserGroup类的id
makemigrations会读取类,在miagrations文件夹中生成配置文件,migrate会以此配置文件连接数据库。
6、数据表格增删改查
在业务处理逻辑中增加:
from app01 import models
models.UserGroup.objects.create(title='销售部')
models.UserInfo.objects.create(username='root',password='pwd',age=18,usergroup_id=1)
类对应的表格,对象对应的一行数据
group_list = models.UserGroup.objects.all() #查找表格中的所有数据
for row in group_list:
print(row.id,row.name)
加条件筛选:
group_list = models.UserGroup.objects.filter(id__gt=1)
__gt >
__lt <
django中的神奇的双下划线
取第一个:
在后面加上.first(),结果不再为列表,直接为类对象
删除:
models.UserGroup.objects.filter(id=2).delete()
修改
models.UserGroup.objects.filter(id=2).update(title='公关部')
FK连表,正向操作和反向操作