Django使用MySQL数据库的流程

手动创建一个MySQL数据库

配置数据库

ENGINE   MySQL
NAME 数据库的名字
HOST ip
PORT 3306
USER 用户名
PASSWORD 密码

在与settings同级目录下的__init__.py中写代码:

import pymysql
pymysql.install_as_MySQLdb()

写models:

form django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=32)

执行迁移的命令

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

ORM

对象关系映射

对应关系:

​ 类 _> 表

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

​ 属性 _> 字段

ORM能做的事情:对数据做修改、对表做修改

ORM的操作

from django.db import models

class Publisher(models.Model):
name = models.CharField(max_length=32) # 一对多的关系
class Book(models.Model):
name = models.CharField(max_length=32)
pub = models.ForeignKey(to='Publisher',on_delete=None) def __str__(self):
return self.name

查询

from app01 import models 

models.Publisher.objects.all()  #查询所有的数据  QuerySet  对象列表
models.Publisher.objects.get(name='xxx')
#查询一条数据 只能查有且唯一的数据
models.Publisher.objects.filter(name='xxx')
#查询所有满足条件的数据 对象列表 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

新增

obj = models.Publisher.objects.create(name='xxxx')

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) obj = models.Publisher(name='xxxx')
obj.save() # 保存到数据库 obj = models.Book(name='xxx',pub_id=出版社的对象id)
obj.save() 多对多的新增:
书对作者
book_id = request.POST.getlist('book_id')
# 插入数据
obj = models.Author.objects.create(name=author_name)
obj.books.set(book_id) # 设置多对多的关系

删除

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

更新

models.Book.objects.filter(pk=pk).update(name=book_name,pub_id=pub_id)  # 批量更新

obj = models.Book.objects.filter(pk=1).first()
obj.name = 'xxxx'
obj.pub_id = 2
# book_obj.pub = 出版社的对象
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 什么都不变
"""

多对多

class Pulisher(models.Model):
name = models.CharField(max_length=32) class Book(models.Model):
name = models.CharField(max_length=32)
pub = models.ForeignKey('Pulisher',on_delete=models.DO_NOTHING) class Author(models.Model):
name = models.CharField(max_length=32)
books= models.ManyToManyField(to='Book')
# 查询
book_obj.pub # 所关联的对象 book_obj.pub_id 所关联的对象的id author_obj.books # 关系管理对象
author_obj.books.all() # 所关联的所有的书籍对象
# 新增
Book.objects.create(name='xxx',pub=对象)
Book.objects.create(name='xxx',pub_id=对象的ID) obj= Book(name='xxx',pub_id=对象的ID)
obj.save() obj = Author.objects.create(name='xxx')
obj.books.set([书籍id,书籍id])
# 删除
Book.objects.filter(pk=pk).delete() # QuerySet 删除
Author.objects.get(pk=pk).delete() # 对象 删除
# 编辑
Book.objects.filter(pk=pk).update(name='xxx') book_obj.name ='xxxx'
book_obj.save() Author.objects.filter(pk=pk).update(name='xxx')
author_obj.books.set([id,id])

Django使用MySQL数据库的流程的更多相关文章

  1. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  2. python——django使用mysql数据库(一)

    之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...

  3. Django 连接mysql数据库中文乱码

    Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566   版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...

  4. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

  5. Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'

    Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?' 一.原因 因为Python版本问题,MySQLdb ...

  6. DJango配置mysql数据库以及数据库迁移

    DJango配置mysql数据库以及数据库迁移 一.Django 配置MySQL数据库 在settings.py中配置 import pymysql # 配置MySQL pymysql.install ...

  7. Python3之Django连接mysql数据库

    一.mysql服务器 系统版本:CentOS6.8 IP :10.0.0.51 版本 1.授权root远程登录 grant all on *.* to 'root'@'%' identifide by ...

  8. Django 连接 MySQL 数据库及常见报错解决

    目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...

  9. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

随机推荐

  1. 线段树+lazy标记 2019年8月10日计蒜客联盟周赛 C.小A的题

    题目链接:https://nanti.jisuanke.com/t/40852 题意:给定一个01串s,进行m次操作,|s|<=1e6,m<=5e5 操作有两种 l r 0,区间[l,r] ...

  2. python学习笔记-生成随机数

    更多大数据分析.建模等内容请关注公众号<bigdatamodeling> 在实现算法时经常会用到随机数,有时会忘记各种随机数的生成方法,这里对Python中的随机数生成方法进行汇总,以供以 ...

  3. Python递归函数如何写?正确的Python递归函数用法

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归 ...

  4. Element UI 源码—— Carousel 走马灯学习

    参考博客:https://segmentfault.com/a/1190000014384638?utm_source=tag-newest

  5. Ubuntu 18.04系统中不能ssh外网远程

    前言 今天我不小心动了电插板,导致服务器断电,用远程命令开机,居然很长时间没反应,索性就亲自按电源键重启.服务器正常开机启动,ssh可以内网访问,远程命令内网有效果,就是外网不行.经过分析排查,是不是 ...

  6. poj 2513 Colored Sticks (trie树+并查集+欧拉路)

    Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 40043   Accepted: 10406 ...

  7. SQLHelper.cs类 微软C#版

    using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.Collect ...

  8. 《Java基础知识》Java类与类之间的关系

    类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登 ...

  9. MySql 5.7.28 安装注意事项

    刚好最近用到了5.7,所以顺便整理记录一下,5.7与5.6的区别是5.7不可以使用空密码直接登录 下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mys ...

  10. JS---封装缓动(变速)动画函数---增加多个任意多个属性

    封装缓动动画函数---增加多个任意多个属性 在原来缓动动画函数,增加任意一个属性的基础上,做了如下改变 1. 原来function animate(element, attr, target),三个变 ...