Django 中ORM操作数据库的使用方法、步奏、案例
程序员文章站
2022-04-16 10:29:18
...
ORM对应关系
通常在关系比较复杂的情况下需要单独创建一张表格来关联其他表
类
—> 数据表
对象
—> 数据行
属性
—> 字段
能做的事
- 1.操作数据表
- 2.操作数据行
不能做的事
- 不能创建数据库,必须手动创建
使用步骤
- 1.创建数据库
- 2.在Django项目中设置连接配置 setting.py中设置
DATABASES = {
'default': {
# 连接数据库类型 在末尾写入mysql即可
'ENGINE': 'django.db.backends.mysql',
# 数据库地址
'HOST': '127.0.0.1',
# 端口
'PORT': 3306,
# 数据库名
'NAME': '创建的库名',
# 用户
'USER': 'root',
# 密码
'PASSWORD': '密码'
}
}
- 3.Django数据库连接工具设置
模块pymysql代替默认的MySQLDB,因为其不支持python3
Django总项目目录下 __init__.py 内写入
# Django总项目目录下 __init__.py 内写入,不是app文件下!!!!
import pymysql
# 代替MySQLdb
pymysql.install_as_MySQLdb()
- 4.modesl.py 代码定义表格式,等待创建
'''在aap内models.py 中定义类,必须继承models.Model'''
# 内置固定语法
class UserInfo(models.Model):
id = models.AutoField(primary_key=True) # 创建一个自增的主键字段
'''如果要做【外键】:字段 = models.ForeignKey(to='关联的对象!表',on_delete=models.CASCADE)'''
# 创建varchar类型,不能为空字段,最大长度20、且唯一不能重复
name = models.CharField(null=False, max_length=20,unique=True)
-
5.开始执行命令来创建表
直接在pycharm 下面Terminal窗口执行
'''登记models.py内的改动,并存到app下 migrations内'''
python3 manage.py makemigrations
'''把内容,翻译成数据库语言并执行'''
python3 manage.py migrate
或者
直接输入 makemigrations 等命令,带有智能提示~
注意事项
需要在models中对应的表格字段 后添加 default='默认值'
多对多表创建
有出版商,作者,和书。一本书有多个作者,只有一个出版商。
作者和出版商好理解,各一个表就是了。书应该作为几个表呢?1个和2个都可以。如果你主要是以出版商和作者为对象操作,可以把书看成一个纽带而已,书这个表里存放着出版商和作者的关系。又因为一行存不下所有作者的id(假设没有压缩),所以book表里面会有很多book会重复。所以book表的名字改成author_publisher搞不好还更妥当。
'''作者表与书表 多对多的情况下(一个作者可以写多本书,一本书也可以多个作者)'''
class Author(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=16,null=False,unique=True) # 不为空, 唯一
# 作者关联书籍表
# 设置当前表与指定表的关联,ORM自动生成一张表对应,格式 app_当前表_关联表
book = models.ManyToManyField(to='Book')
'''会生成一张app+author_book的表'''