首页 > 其他 > 详细

Django之ORM

时间:2019-10-31 21:23:23      阅读:75      评论:0      收藏:0      [点我收藏+]
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的书和我这个作者关联上

  

Django之ORM

原文:https://www.cnblogs.com/cwj2019/p/11773619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!