在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() 来做这样的 ...
随机推荐
- sql语言:如何查询字符串某个字符的个数?
sql语言:如何查询字符串某个字符的个数? 这语句太精彩了! select len('05011045')-len(replace('05011045','0',''))
- WebGPU 工具分享 - WGSL 代码高亮插件(VSCode)与预处理工具
WGSL 还在积极讨论中,虽然各位大佬不是很满意这个新生儿. 不过,社区已经有了基础的实验性工具(VSCode 插件),并支持了较新的语法. ① WGSL 插件 这个插件支持对文件扩展名为 .wgsl ...
- CF1225E Rock Is Push (计数)
观察性质计数题orz小贺 考场上跟榜才切 我们只能往下和往右走,那么只有连续的往下和往右可能会造成不合法的情况!如果当前这一步是向右,那么只有它前面连续的一段向右可能影响到它. 考虑把连续的向右/下一 ...
- C# XML基础入门(XML文件内容增删改查清)
前言: 最近对接了一个第三方的项目,该项目的数据传输格式是XML.由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了.因此对于XML这块自己感觉还是有很多盲 ...
- Java的重载以及与重写的区别
一.什么是方法重载 方法的重载就是在同一个类中,有着若干个名字相同的方法.在具体调用这些方法的时候,通过传递参数的不同来调用这些重载方法. 二.为什么需要方法重载 方法名的定义需要做到见名知意,功能类 ...
- HTML、JavaScript、Java、CSS它们的注释有哪些相同和不同?
<!--html--> /*css*/ //javascript /*javascript*/
- Redis 如何设置密码及验证密码?
设置密码:config set requirepass 123456 授权密码:auth 123456
- 学习Tomcat(一)
一.jdk和tomcat基础 1.web应用对比 apache: 两种方式运行php,一是用模块,二是用fastcgi nginx: 通过fastcgi处理动态请求,也可转发到tomcat 2.tom ...
- ElasticSearch-学习笔记04-复杂查询
service package com.huarui.service; import com.huarui.entity.SearchEntity; import com.huarui.exectio ...
- ROS环境变量的设置
一.前言(大神可以直接跳过) 本博客主要就是为了介绍ROS中环境变量的设置过程,还不是很了解ROS的可以去看一下我的博客,ROS简介-从零开始讲解ROS(适合超零基础阅读) ROS为什么需要设置环境变 ...