老男孩python全栈就业班第9期第4部分django进阶第68天ORM内容回顾
ORM内容回顾
1.Django 项目如何使用 ORM 连接 MySQL
1.手动创建数据库
2.在 settings.py 里面配置一下数据库的连接信息(告诉 Django 连接哪一个数据库)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day62',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123456',
}
}
3.在和 settings.py 同目录下的 __init__.py 文件中,告诉 Django 用 pymysql 代替 MySQLdb 来连接数据库
import pymysql pymysql.install_as_MySQLdb()
4.在 app/models.py 中,定义类,类一定要继承 models.Model
class Book(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=32)
5.执行两条命令
1.在哪儿执行?
在项目的根目录(有 manage.py 文件的那个目录)
2.命令
python manage.py makemigratinons --> 将 modes.py 文件中的改动记录在小本本(app/migrations/0xx_*****.py)上
python manage.py migrate --> 将改动翻译成 SQL 语句,去数据库中执行
2.表和表之间的关系
1.一对多(出版社和书)
publisher = models.ForeignKey(to="Publisher")
在数据库中有没有 publisher 这个字段?
数据库实际中生成的是一个 publisher_id 字段
2.多对多(作者和书)
books = models.ManyToManyField(to="Book")
3.增删改查操作
1.单表增删改查
增:
models.Publisher.objects.create(name="沙河出版社")
查:
models.Publisher.objects.get(id=1)
models.Publisher.objects.get(name="沙河出版社")
删:
models.Publisher.object.get(id=1).delete()
改:
obj = models.Publisher.objects.get(id=1)
obj.name = "沙河第二出版社"
obj.save()
2.外键的增删改查
增、删、查同上
book_obj = models.Book.objects.get(id=1)
book_obj.publisher 是什么?
和我这本书关联的出版社对象
book_obj.publisher.id 和我这本书关联的出版社的id值
book_obj.publisher.name 和我这本书关联的出版社的name值
book_obj.publisher_id 是什么?
和我这本书关联的出版社的id值
3.多对多操作
1.查到id为1的作者都写过的书?
author_obj = models.Author.object.get(id=1)
author_obj.books.all()
2.想给作者绑定多本书?
author_obj = models.Author.object.get(id=1)
author_obj.books.set([1,2,3])
posted on 2019-12-26 05:22 herisson_pan 阅读(7) 评论(0) 收藏 举报
浙公网安备 33010602011771号