在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() 来做这样的 ...
随机推荐
- Java基础 - 注解详解
What - 什么是注解? Annontation是Java5开始引入的新特征,中文名称叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素( ...
- JDK,JRE,JVM的作用及关系
1.作用 JVM:Java虚拟机,保证Java语言跨平台 JRE:Java程序的运行环境 JDK:Java程序的开发环境 2.关系 JRE:JVM+类库 JDK:JRE+工具
- Linux上如何设置nginx开机启动
连接上linux后输入以下命令--vim /etc/init.d/nginx 然后在这个空文件写入下面内容: 保存好后,修改下该文件权限--chmod 777 /etc/init.d/nginx 然后 ...
- pg数据库排序和limit同时使用遇到的奇怪问题
这两天由于一位实习生同事回学校答辩,因此我来跟进他之前开发的功能进行测试,测试反馈上来这么一个问题: 也就是说下面这两条sql查询出来的数据前10条的数据不一样. select * from tabl ...
- 学习openstack(八)
一.OpenStack初探 1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运行自己的云计算和存储设施.Rackspace与NASA是最初 ...
- vue 3d轮播组件 vue-carousel-3d
开发可视化项目时,需要3d轮播图,找来找去发现这个组件,引用简单,最后实现效果还不错.发现关于这个组件,能搜到的教程不多,就分享一下我的经验. 插件github地址:https://wlada.git ...
- CountDownLatch和CyclicBarrier:如何让多线程步调一致?
案例:对账系统的业务是这样的,用户通过在线商城下单,会生成电子订单,保存在订单库:之后物流会生成派送单给用户发货,派送单保存在派送单库.为了防止漏派送或者重复派送,对账系统每天还会校验是否存在异常订单 ...
- DOS、DOS攻击、DDOS攻击、DRDOS攻击
https://baike.baidu.com/item/dos%E6%94%BB%E5%87%BB/3792374?fr=aladdin DOS:中文名称是拒绝服务,一切能引起DOS行为的攻击都被称 ...
- js 简易模块加载器 示例分析
前端模块化 关注前端技术发展的各位亲们,肯定对模块化开发这个名词不陌生.随着前端工程越来越复杂,代码越来越多,模块化成了必不可免的趋势. 各种标准 由于javascript本身并没有制定相关标准(当然 ...
- fetch,终于认识你
fetch和XMLHttpRequest 如果看网上的fetch教程,会首先对比XMLHttpRequest和fetch的优劣,然后引出一堆看了很快会忘记的内容(本人记性不好).因此,我写一篇关于fe ...