在django中使用orm来操作MySQL数据库的建表,增删改
多张表之间的三种关系:一对一,一对多,多对多
创建表
一对一
xx = models.OneToOneField(to='表明',to_field='字段名',on_delete=models.CASCADE)
#删除时的一些级联效果,to_field可以不写,默认是关联到另一张表的主键,on_delete在1.x版本的django中不用写,默认是级联删除,2.x版本的django要写 一对多
xx = models.Freignkey(to='表名',to_field='字段名',on_delete=models.CASCADE) 多对多
xx = models.ManyToManyField(to='另外一个表明')#只是自动创建第三张表
数据的增删改
增
一对一增加
mew_author_detail = models.AuthorDetail.objects.create(
birthday='1979-08-08',
telephone='13811223344',
addr='黑龙江哈尔滨'
) obj = models.AuthorDetail.objects.filter(addr='山西临汾').first() #方式1
models.Author.objects.create(
name='王涛',
age='40',
authorDetail=new_author_detail,
)
#方式2 #常用
models.Author.objects.create(
name='王涛',
age='40',
authorDetail_id=obj.id,
) #一对多
#方式1
obj = models.Publish.objects.get(id=2)
models.Book.objects.create(
title = '朝花夕拾',
pubilshDate='2019-07-22',
price=3,
publishs=obj,
)
#方式2 常用
models.Book.objects.create(
title='朝花夕拾',
publishDate='2019-07-21',
price=3.5,
publishs_id=obj.id
) 多对多
方式1 常用
book_obj = models.Book.objects.get(id=1)
book_obj.authors.add(*[1,2])
方式2
author1 = models.Author.objects.get(id=1)
author2 = models.Author.objects.get(id=3)
book_obj=models.Book.objects.get(id=5)
book_obj.authors.add(*[author1,author2])
删
一对一和一对多的删除和单表删除是一样的
一对一 表一外键关联到表二,表一删除,不影响表二,表二删除会影响表一
models.AuthorDetail.objects.get(id=2).delete()
mmodels.author.objects.get(id=3).delete() 一对多
models.Pubish.objects.get(id=1).delete()
models.Book.objects.get(id=1).delete() 多对多关系删除
book_obj = models.Book.objects.get(id=6)
book_obj.authors.remove(6)
book_obj.authors.remove(*[5,6])
book_obj.authors.clear() #清空
book_obj.authors.set(['5','6']) #删除然后更新
更新
一对一
models.Author.objects.filter(id=5).update(
name='崔老师',
age=16,
authorDetail_id=4,
)
一对多
models.Book.objects.filter(pk=4).update(
title='B哥的往事2',
publishs_id=3,
)
多对多
book_obj = models.Book.objects.get(id=6)
book_obj.authors.set(['5','6']) #删除然后更新
在django中使用orm来操作MySQL数据库的建表,增删改的更多相关文章
- Python操作MySQL数据库完成简易的增删改查功能
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶效果展示 三丶数据准备 四丶代码实现 五丶完整代码 一丶项目介绍 1.叙述 博主闲暇之余花了10个小时写的 ...
- JAVA 操作远程mysql数据库实现单表增删改查操作
package MysqlTest; import java.sql.DriverManager; import java.sql.ResultSet; import com.mysql.jdbc.C ...
- Django中的ORM进阶操作
Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...
- 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...
- 使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理
一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的 ...
- django连接mysql数据库以及建表操作
django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...
- django中 对Mysql数据库的建表
Django操作Mysql数据库: 1.1 在settings中,配置数据库相关参数,所以无需修改,这里我们看一下: DATABASES = { 'default': { # 这里可以指定使用的数据库 ...
- 【tips】ORM - SQLAlchemy操作MySQL数据库
优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...
- Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL
一 F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...
随机推荐
- Linux下mysql的彻底卸载
1.查看mysql的安装情况 rpm -qa | grep -i mysql 2.删除上图安装的软件 rpm -ev mysql-community-libs-5.7.27-1.el6.x86_64 ...
- AD2019(Altium designer)常用快捷键,使用技巧
测量工具 测量距离:Ctrl+M, 删除测量结果:shift+C, 退出测量:多次右键 设置栅格 G或Ctrl+G 3D查看 按住shift键,再按住鼠标右键移动鼠标,即可在任意角度查看PCB的3D效 ...
- LCT板子
粘板子: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; c ...
- AS3 setChildIndex的bug
AS3 setChildIndex的bug 小伙伴们注意了,在timelines使用 MovieClip 的 setChildIndex方法要注意,因为它有一个bug,调整显示对象的深度之后,会导致显 ...
- Oracle Yum源
仓库地址(非Yum源仓库):https://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html 如何连接到 Orac ...
- XML文档约束有哪几种?有什么区别?
XML DTD(功能有限) XML Schema (功能强大) Schema本身是XML的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),Schema支持命名空间,Schema ...
- 什么是Spring Cloud Bus?
spring cloud bus 将分布式的节点用轻量的消息代理连接起来,它可以用于广播配置文件的更改或者服务直接的通讯,也可用于监控. 如果修改了配置文件,发送一次请求,所有的客户端便会重新读取配置 ...
- Oracle入门基础(二)一一过滤和排序
SQL> --查询10号部门的员工 SQL> select * from emp where deptno=10; EMPNO ENAME JOB MGR HIREDATE SAL COM ...
- Spring源码分析笔记--事务管理
核心类 InfrastructureAdvisorAutoProxyCreator 本质是一个后置处理器,和AOP的后置处理器类似,但比AOP的使用级别低.当开启AOP代理模式后,优先使用AOP的后置 ...
- Spring工作原理:初识SpringMVC
1.SpringMVC简介 SpringMVC是Spring框架的一个模块.SpringMVC和Spring无需通过中间层进行整合.是一个轻量级的,基于请求响应的MVC框架. 2.1.什么是MVC? ...