zoukankan      html  css  js  c++  java
  • 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的书和我这个作者关联上

  • 相关阅读:
    python 文件处理 -- 02 文件属性&标准输入输出&命令行参数&文件编码
    python 文件处理 -- 01 文件打开&读取&写入&关闭&指针
    python进阶-- 04 如何定制类
    python进阶-- 03 面向对象编程
    python进阶-- 02 如何使用模块
    python进阶-- 01 函数式编程
    python基础-- 08 迭代&列表生成式
    python基础-- 07 切片
    python基础-- 06 函数
    关于hanlp自定义词典的使用
  • 原文地址:https://www.cnblogs.com/l-jie-n/p/9663287.html
Copyright © 2011-2022 走看看