1. ORM已经的学过的内容: 1. Django项目如何使用ORM连接MySQL 1. 手动创建数据库 2. 在settings.py里面配置一下数据库的连接信息(告诉Django连接哪一个数据库) DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, # 连接数据库的类型 ‘NAME‘: ‘day62xiawu‘, # 数据库名字 ‘HOST‘: ‘127.0.0.1‘, # IP ‘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 makemigrations --> 将models.py文件中的改动记录在小本本(app/migrations/00xx_****.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.objects.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 和我这本书关联的出版社的名称 book_obj.publisher_id 是什么? 和我这本书关联的出版社的id值 3. 多对多操作 1. 查id为1的作者都写过的书? author_obj = models.Author.objects.get(id=1) author_obj.books.all() --> 和我这个作者关联的所有书对象 2. 想给作者绑定多本书? author_obj = models.Author.objects.get(id=1) author_obj.books.set([1,2,3]) --> 把id是1、2、3的书和我这个作者关联上
原文:https://www.cnblogs.com/cwj2019/p/11773619.html