Django orm

mac2022-06-30  96

ORM简介:

MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动。

ORM是“对象-关系-映射”的简称。

翻译成相应的sql语句:

缺点: 消耗一定的时间

优点:可以更换引擎来翻译成不同的数据库语法

单表操作

ORM不能直接创建数据库,只能创建表

1. 创建模型

在models.py中创建模型:

from django.db import models class Book(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=32) state = models.BooleanField() pub_date = models.DateField() price = models.DecimalField(max_digits=8, decimal_places=2) publish = models.CharField(max_length=32)

每个字段有一些特有的参数,还有一些适用于所有字段的通用参数:

2.setting配置

若想将模型转为mysql数据库中的表,需要在settings中配置:

DATABASES = { 'default':{ 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db1', # 要连接的数据库名称 'USER': 'root', # 连接数据库的用户名 'PASSWORD':'', # 连接数据库的密码 'HOST': '127.0.0.1', # 连接主机, 默认本地 'POST': 3306 # 端口 默认 3306 } }

NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建 USER和PASSWORD分别是数据库的用户名和密码。设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 对于py3有很大问题,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的init,在里面写入:

配置pymyqdb:(这个是默认py2中的链接方式)

migrations——> __init__.py:

import pymysql pymysql.install_as_MySQLdb()

确保配置文件中的INSTALLED_APPS中写入我们创建的app名称

如果报错如下:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,需要修改如下:

通过查找路径Python36-32\Lib\site-packages\Django-2.0-py3.6.egg\django\db\backends\mysql

这个路径里的文件把目标注释掉就可以了:

if version < (1, 3, 3): raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

如果想打印orm转换过程中的SQL,需要在settings中进行如下配置:

LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level': 'DEBUG', },

结果: 会生成django自带表(settings中的INSTALLED_APPS)

如果不加主键,django会默认加名叫id的主键

数据库迁移

django会把settings中的INSTALLED_APPS中的每一个应用中的modeles类创建成数据库中的表

创建数据库(models)

python manage.py makemigrations

python manage.py makemigrations python manage.py migrate

与SQL的映射关系

       类 ———— 表 名

类属性 ———— 表字段

类对象 ———— 表记录

转载于:https://www.cnblogs.com/jiumo/p/9856741.html

最新回复(0)