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的书和我这个作者关联上

  • 相关阅读:
    本地计算机上的SQL Server(MSSQLSERVER)服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
    三色需求与工作层次
    dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Gold;第一次无效
    c# 在DataTable的第一列(指定列)的前面添加一列
    去掉DataGridView最后一行的空白行,删除空白行
    阿里云OSS Multipart Upload上传实例
    sql 自动增加排序 并且初始值是000001
    HTML禁用Flash文件右键
    HTML,JS禁止鼠标右键、禁止全选、复制、粘贴的方法
    C#PDF转Word
  • 原文地址:https://www.cnblogs.com/l-jie-n/p/9663287.html
Copyright © 2011-2022 走看看