Django使用MySQL数据库的流程

Django使用MySQL数据库的流程

  1. 手动创建一个MySQL数据库

  2. 配置数据库

    ENGINE   MySQL
    NAME 数据库的名字
    HOST    ip 
    PORT    3306
    USER    用户名
    PASSWORD  密码
  3. 在与settings同级目录下的__init__.py中写代码:

    import pymysql
    pymysql.install_as_MySQLdb()
  4. 写models:

    form django.db import models 
    class Publisher(models.Model):
     name = models.CharField(max_length=32)
    
  5. 执行迁移的命令

    python  manage.py  makemigrations  # 检查已经注册的APP下面的models.py的变更情况
    python manage.py migrate   # 执行迁移 
  6. ORM

    对象关系映射

    对应关系:

    ​ 类 _> 表

    ​ 对象 _> 数据行(记录)

    ​ 属性 _> 字段

    ORM能做的事情:

    1. 对数据做修改
    2. 对表做修改

    ORM的操作

    查询

    from app01 import models 
    
    models.Publisher.objects.all()  #查询所有的数据  QuerySet  对象列表 
    models.Publisher.objects.get(name='xxx') 
                     #查询一条数据  只能查有且唯一的数据
    models.Publisher.objects.filter(name='xxx') 
                     #查询所有满足条件的数据 对象列表 

    新增

    obj = models.Publisher.objects.create(name='xxxx')
    
    obj = models.Publisher(name='xxxx')
    obj.save()  # 保存到数据库

    删除

    models.Publisher.objects.filter(pk=pk).delete()   # 批量删除
    models.Publisher.objects.get(pk=pk).delete() # 单条数据的删除

    更新

    models.Publisher.objects.filter(pk=pk).update(name='xx')  # 批量更新
    
    obj = models.Publisher.objects.get(pk=pk)
    obj.name = 'xxxx'
    obj.save()  # 保存到数据库

外键

一对多的关系

class Book(models.Model):
    name = models.CharField(max_length=32)
    pub = models.ForeignKey('Publisher', on_delete=models.CASCADE)
  
 
    """
    on_delete 在2.0版本之后是必填的
    on_delete= 
        models.CASCADE  级联删除
        PROTECT   保护
        SET(1)    
        SET_DEFAULT  设置为默认值设置为某一个值
        SET_NULL   设置为空
        DO_NOTHING 什么都不变
    """
    

查询

all_books = models.Book.objects.all()
    
for book in all_books:
    print(book)
    print(book.id)
    print(book.pk)
    print(book.name)
    print(book.pub)  # 所关联的出版社对象        对象.外键
    print(book.pub_id)  # 所关联的出版社对象的id   对象.外键_id

新增

models.Book.objects.create(name=book_name,
                           pub=models.Publisher.objects.get(pk=pub_id))
obj = models.Book.objects.create(name=book_name, pub_id=pub_id)

编辑

book_obj.name = book_name
book_obj.pub_id = pub_id
# book_obj.pub  =  出版社的对象
book_obj.save()
models.Book.objects.filter(pk=pk).update(name=book_name,pub_id=pub_id)

你可能感兴趣的:(Django使用MySQL数据库的流程)