Django:ORM总结
ORM即:关系对象映射(Object Relational Mapping)
常见两种建表方式
dbfirst :创建数据库表结构(第一步在数据库中进行操作),根据表结构创建类,之后根据类操作数据库
codefirst:先写code,例如先写每个类,之后根据类生成表,数据库表是后创建的(主流)
django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表
ORM操作:通过类创建数据库 转成sql语句,执行创建表 django的ORM支持修改表结构
1.创建类
1.-根据自动表创建数据库
a. app下创建models.py文件,并且导入
from django.db import models #导入
b. 注册app: project同名的settings.py文件进行配置
Django默认数据库配置如下,若要使用其他数据库,需在下面配置中添加。
1 INSTALLED_APPS = [ 2 'django.contrib.admin', 3 'django.contrib.auth', 4 'django.contrib.contenttypes', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles', 8 'app01', 9 ]
1 DATABASES = { 2 'default': { 3 'ENGINE': 'django.db.backends.sqlite3', 4 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 5 } 6 }
注:若使用MySQL数据库:
Django内部默认使用mysqldb模块连接mysql,python3没有此模块,所以Django使用pymysql连接,在项目同名的__init__文件下,添加以下代码即可:
import pymysql
pymysql.install_as_MySQLdb()
c. 建表后,执行命令:
python manage.py makemigrations
python manage.py migrate
字段:
- 字符串、
- 数字、
- 时间、
- 二进制
自增(primary_key=True)
字段的参数: null ->db是否可以为空 default ->默认值 primary_key ->主键 db_column ->列名 de_index ->索引 unique ->唯一索引 unique_for_date ->对日期唯一索引 unique_for_month ->对月份唯一索引 unique_for_year ->对年份唯一索引 choices ->Django admin中显示下拉框,避免连表查询 auto_now ->创建时,自动生成时间 auto_now_add ->更新时,自动更新为当前时间 blank ->Django admin中是否可以为空 verbose_name ->Django admin中显示字段中文 editable ->Django admin中是否可以被编辑 error_messages ->Django admin中错误信息 help_text ->Django admin中帮助信息,小hint validators ->Django form 自定义错误信息