ORM模型
在写models.py基本用法之前,我们先来了解一下自己的的写的sql缺点:
随着我们写的项目越来越大,如果还继续使用原生sql语句去写的话,那么将会出现以下问题:
- SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。
- 很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改。
- 自己写的sql语句可能安全性不高,容易造成sql注入等web安全问题。
ORM简介
ORM全称为Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。通过把表映射成类,把行作实例,把字段作为属性(以下会有解释),ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。
创建ORM模型
前奏
老规矩,先创建一个项目吧:
(my_env) F:\ENV>django-admin startproject model_test
然后创建一个app(name:book)
(my_env) F:\ENV\model_test>python manage.py startapp book
使用pycharm打开项目,项目目录如下:
F:.
│ manage.py
│
├─.idea
│ │ misc.xml
│ │ model_test.iml
│ │ modules.xml
│ │ workspace.xml
│ │
│ └─inspectionProfiles
│ profiles_settings.xml
│
├─book
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ └─migrations
│ __init__.py
│
└─model_test
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
└─__pycache__
settings.cpython-36.pyc
__init__.cpython-36.pyc
现在创建一个数据库(name:model_test),推荐使用Naicat(因为简单),新建号之后,我们任何表都没有,不要着急,接着来。
打开settings.py文件,修改数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'model_test',
'USER': 'root',
'PASSWORD': '自己的mysql密码'