Django 中ORM操作数据库的使用方法、步奏、案例

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的表'''
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值