老男孩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)    收藏  举报

导航