Django2中ORM的相关内容
数据库创建新用户&授权
create user '<username>'@'%' identified by '<password>';
grant all privileges on <database>.* to '<username>'@'%';
flush privileges;
在数据库系统中中执行这些命令,可以给指定用户针对某个database进行授权,这里*授予了所有权限。
配置数据库
在项目下的settings.py中的DATABASES中,将默认的
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
注释掉,然后再添加上以下配置:
'ENGINE': 'django.db.backends.mysql',
'NAME': '<数据库名称>',
'HOST': '<云服务器地址>',
'PORT': '3306',
'USER': '<数据库user>',
'PASSWORD': '<数据库密码>',
如果用的是pymysql作为驱动,需要做一些额外的修改。
首先在项目下的init.py添加:
import pymysql
pymysql.install_as_MySQLdb()
然后按住ctrl点击第二个语句,进入到源代码中,添加如下代码:
就可以使用pymysql了。
模型的创建&模型迁移
在应用下的models.py中建立你的模型:
class Subject(models.Model):
"""学科"""
no = models.AutoField(primary_key=True, verbose_name='编号')
name = models.CharField(max_length=32, verbose_name='名称')
intro = models.CharField(max_length=2000, verbose_name='介绍')
class Meta:
db_table = 'tb_subject'
其中models.AutoField等是字段类型,括号内分别是约束条件,verbose_name是在django自带的admin系统中的表列名,db_table是数据库中数据表的名称,通常写成tb_xxx的形式。
创建好模型后,在终端使用:
python manage.py makemigrations
python manage.py migrate
完成数据模型的迁移,生成对应的数据表。
ORM对象关系映射
使用ORM的好处是不用写SQL语句,直接操作模型和对象,就能完成数据的交互操作。
添加:
subject = Subject(name='数学',intro='数学很难')
subject.save()
查询:
subject = Subject.objects.get(no=1)
print(subject.no,subject.name,subject.intro)
查询还可以使用Subject.objects.filter(条件),返回结果是QuerySet查询集,可以用for循环遍历。
修改:
subject = Subject.objects.get(no=1)
subject.intro = '数学很简单啊'
subject.save()
修改是基于查询的,先查出来,在将它的某个属性重新赋值,然后再保存,就修改完成了。
删除:
subject = Subject.objects.get(no=1)
subject.delete()
删除也是基于查询的,先找到,然后使用delete方法删除。