Django使用MySQL数据库的流程
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数据库的流程的更多相关文章
- python——django使用mysql数据库(二)
上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...
- python——django使用mysql数据库(一)
之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...
- Django 连接mysql数据库中文乱码
Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566 版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...
- django连接mysql数据库以及建表操作
django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...
- Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'
Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?' 一.原因 因为Python版本问题,MySQLdb ...
- DJango配置mysql数据库以及数据库迁移
DJango配置mysql数据库以及数据库迁移 一.Django 配置MySQL数据库 在settings.py中配置 import pymysql # 配置MySQL pymysql.install ...
- Python3之Django连接mysql数据库
一.mysql服务器 系统版本:CentOS6.8 IP :10.0.0.51 版本 1.授权root远程登录 grant all on *.* to 'root'@'%' identifide by ...
- Django 连接 MySQL 数据库及常见报错解决
目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
随机推荐
- 放大镜效果 --- enlarge.js
html页面: 注释:遮罩层的大小取决于 ===>layerwidth/layerheight = largewidth/largeheight enlarge.js页面 /* jqu ...
- HTML语言和CSS开发商业站点 错题
1.关于css为什么会出现Bug说法不正确的是(). (选项两项) A.编写CSS样式是需要在不同浏览器中实现表现一致 B.各大主流浏览器由于不同厂家开发,浏览器使用的内核不同,支持CSS的程度不同 ...
- Nginx目录结构与配置文件详解
Nginx安装 具体安装nginx请移步:[nginx部署] 安装依赖 安装pcre依赖软件 [root@ubuntu ~]# yum install -y pcre pcre-devel //外网情 ...
- 2- 设置断点修改Request
以下是借鉴别人的知识分享.我在这里转载,如有冒犯,还请告知. 如何设置断点修改Request呢? fiddler最强大的功能就是可以设置断点了.设置好之后,你可以修改HttpRequest的任何信息, ...
- Python3 并发编程小练习
实现基于TCP协议套接字,服务端实现接收客户端的连接并发 # server.py import socket from threading import Thread server = socket. ...
- python学习-加载配置文件
import configparser # 实例化cp = configparser.ConfigParser() # 加载配置文件cp.read("my_config.conf" ...
- Linux三剑客之awk命令详解
一.awk介绍 AWK是一种优良的文本处理工具.它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho .Pet ...
- 牛客国庆集训派对Day1 L New Game!(堆优化dijkstra+建图)
链接:https://ac.nowcoder.com/acm/contest/201/L来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言2097 ...
- 剑指Offer-46.孩子们的游戏(圆圈中最后剩下的数)(C++/Java)
题目: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指定 ...
- 《Java Spring框架》Spring切面(AOP)配置详解
1. Spring 基本概念 AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2 ...