django模型系统一python
模型基础:mysql
1.django的ORMsql
ORM:对象关系映射,用python表达数据库。shell
2.数据库配置数据库
安装pymysqldjango
修改项目目录下的__init__.pyapp
import pymysql pymysql.install_as_MySQLdb()
手动建立一个当前项目的空的数据库,准备一个有建立数据库权限的用户spa
settings配置:调试
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'crm' , #数据库名 'USER': 'admin', 'PASSWORD':'ROOT110qwe', 'HOST':'127.0.0.1', 'PORT':'3306' }
3.模型的建立与映射对象
模型
就是django.db.models.Model的一个子类
模型定义在app文件夹下的models.py
建立:
from django.db import models # Create your models here. class Student(models.Model): name=models.CharField(verbose_name='姓名',max_length=20) age=models.SmallIntegerField(verbose_name='年龄',null=True) sex=models.SmallIntegerField(default=1) qq=models.CharField(max_length=20,null=True) phone=models.CharField(max_length=20,null=True) c_time=models.DateTimeField(verbose_name='建立时间')
激活模型:
注册应用
建立迁移 只是告诉django,咱们修改了模型,他不会操做数据库
python manage.py makemigrations appname
若是咱们想看咱们的更改会对数据库产生什么影响,咱们能够看他大概会执行什么sql语句
python manage.py sqlmigrate teacher 0001
执行迁移操做数据库,将对模型的改动应用到数据库(底层就是执行sql)
python manage.py migrate appname
模型映射到数据库中是一张表,表名=appname_模型name 小写
执行上面的命令,到底干了些什么
在app中查找迁移文件,而且去django_migrations表中查找,若是没有执行的迁移文件,就去执行它。
执行了迁移生成的sql语句
若是成功,会在django_migrations表中增长一条记录
4.简单数据的增删改查
django调试环境
python manage.py shell
增:
#第一种方式: In [4]: Student.objects.all() Out[4]: <QuerySet []> In [5]: s=Student() In [6]: s Out[6]: <Student: Student object (None)> In [7]: s.name='jonney' In [8]: s.age=18 In [9]: Student.objects.all() Out[9]: <QuerySet []> In [10]: s.save() #save以后才会写到数据库
#第二种方式
stu=Student.objects.create(name='jenny',age=18) #直接建立
删:
#删一条
In [14]: stu.delete() Out[14]: (1, {'teacher.Student': 1})
#删多条
In [9]: Student.objects.filter(sex=1).delete()
Out[9]: (2, {'teacher.Student': 2})
#删全部
Student.objects.all().delete()
改:
#改一条 In [18]: s.age=16 In [19]: s.save()
#改多条:
In [7]: Student.objects.all().update(sex=0)
Out[7]: 2
查:
#查全部In [2]: Student.objects.all()Out[2]: <QuerySet [<Student: jonney>, <Student: jenny>]> #查一条 In [3]: Student.objects.get(pk=1) Out[3]: <Student: jonney>#get返回的是对象,若是反悔了多值,就会报错,返回零个也报错,只能返回一个 #带条件In [4]: res=Student.objects.filter(sex=1) #where sex=1In [5]: res Out[5]: <QuerySet [<Student: jonney>, <Student: jenny>]>