django之mysql数据库的配置和orm交互
一:django默认数据库的配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
二:自定义数据库的配置
1. 安装mysql驱动 install PyMySQL
2. setting.py中修改 DATABASES中的配置。
# ———————————————————mysql数据库的设置———————————————————
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "django_study_test", # 迁移是生成数据库的名称
'HOST':"127.0.0.1",
'PORT':3306,
'USER':"xx",
'PASSWORD':"xx",
}
}
# ———————————————————mysql数据库的设置———————————————————
3.工程目录下的__init__.py中设置。
from pymysql import install_as_MySQLdb install_as_MySQLdb()作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。
4. 在应用中的model.py中定义模型类
from django.db import models # Create your models here. class Country(models.Model):
# 没有定义主键,迁移生成建表语句是,会自动增加id这个字段。
country_name = models.CharField(max_length=20,verbose_name="国家名称")
build_time = models.DateField(verbose_name="创建时间")
country_flower = models.CharField(max_length=20,verbose_name="国花")
province_number = models.IntegerField(verbose_name="行政区的数量")
is_unite_member = models.BooleanField(default=False,verbose_name="联合国五常") class META: # 正确的写法是 class Meta,就相当于没有找到这个抽象的类,所以使用了默认的表名。
db_table = "tb_country" # 设置这个值,不起作用,表的名字还是默认的user_country app的小写_模型类的名字小写为表的名字。 def __str__(self):
return self.country_name class Province(models.Model): province_name = models.CharField(max_length=20,verbose_name="行政区的名字")
nick_name = models.CharField(max_length=20,verbose_name="别称")
famous_school = models.CharField(max_length=20,verbose_name="高等院校")
count_985211 = models.IntegerField(verbose_name="985/211的数量")
belong = models.ForeignKey("Country",on_delete=models.CASCADE,verbose_name="所属国家")
# 迁移建表时候,会自动关联 country的主键。
class META:
db_table = "tb_province" def __str__(self):
return self.province_name
5. shell 中输入迁移指令
python manage.py makemigrations
python manage.py migrate生成了一大堆其他的表,作用是什么?
6. 查看数据库中表的情况
数据库

7.插入数据
文件插入数据
insert into user_country values (1,"中国","1949-10-01","牡丹",32,1),(2,"日本","1949-12-23","樱花",32,1),(3,"韩国","1949-10-01","木槿花",32,1);
insert into user_province values (1,"北京","京城","清华大学",20,1),(2,"上海","魔都","复旦大学",20,1),(3,"广州","粤城","华南理工大学",20,1),(4,"东京","首都","东京大学",20,2),(5,"首尔","泡菜","首尔大学",20,3);
注意:使用的django中的shell工具记性orm的测试

8.增
方法一:


方法二:


9.查
查询所有 类名.objects.all()

一对多查询

多对一查询

条件查询
filter 过滤多个结果
get 过滤单一结果
exlcude 排除掉符合条件后剩下的结果
属性名称__比较运算符=值
条件查询之模糊查询
包含查询 contains 包含

结尾开头查询 startswith endswith

空查询 isnull

范围查询 in=[] in=() 指的是在括号里面出现的范围,不是betwwen的意思。不是从32到100的意思,而是32或100的意思。

比较查询
gt 大于 gte 大于等于 lt 小于 lte 小于等于

不等于 需要使用 exclude过滤器

时间查询 from datetime import date

F对象
用于属性值,用于两个属性之间的数值比较:由于没有其他的int类型字段了,因此从别人的例子中贴图
# 不同属性之间进行比较
Q 对象
多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。
# 表示逻辑![]()
聚合函数
Avg Count Max Min Sum
# 总数 aggregate进行连接Count不用 aggregate进行连接
Avg 平均
Max
排序
# 升序

# 降序
关联查询
# 一到多的查询# 多到一的查询
关联过滤查询
# 一对多的关联查询 # 过滤 多的一方的类名小写__多的一方的字段名+条件![]()
# 多对一的关联查询
多的一方的外键__一的一方的字段名+条件![]()
10 改
# 修改字段值 方法一: obj.字段名 = 新值 obj.save()![]()
方法二: 模型类.objects.filter(字段原值).update(要改的值) 返回受影响的行数
![]()
批量修改
# 批量修改
# 修改前
# 修改中
# 修改后
11.删除
# 删除的两种方式
django之mysql数据库的配置和orm交互的更多相关文章
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- Django使用MySQL数据库的流程
Django使用MySQL数据库的流程 手动创建一个MySQL数据库 配置数据库 ENGINE MySQL NAME 数据库的名字 HOST ip PORT 3306 USER 用户名 PASSWOR ...
- python——django使用mysql数据库(二)
上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...
- python——django使用mysql数据库(一)
之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...
- django连接mysql数据库以及建表操作
django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...
- Django 连接 MySQL 数据库及常见报错解决
目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...
- 在Eclipse中使用JDBC访问MySQL数据库的配置方法
在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...
- Django 连接mysql数据库中文乱码
Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566 版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...
- Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'
Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?' 一.原因 因为Python版本问题,MySQLdb ...
随机推荐
- EDM实例之15个节日邮件标题分享
调查显示,去年节假日,47%的消费者打开节日邮件是因为邮件主题内容吸引.为了让企业获得更多的交易,帮助企业在繁忙的节假日内不畏竞争,全国知名的EDM邮件服务商Focussend历经多年行业的实践分析, ...
- javascript 动态修改css样式方法汇总(四种方法)
在很多情况下,都需要对网页上元素的样式进行动态的修改.在JavaScript中提供几种方式动态的修改样式,下面将介绍方法的使用.效果.以及缺陷. 1.使用obj.className来修改样式表的类名. ...
- MongoDB学习【二】—MongoDB基础和数据类型
一.MongoDB基础知识 在MongoDB中相关术语的解释和sql术语对应关系 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table col ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_6_字节输出流写多个字节的方法
一次写多个字节的方法 要在txt内显示100.49代表1 48 代表0 一次写多个字节 负数前两个组成一个中文.-65和-66 字节数组的一部分 写入字符串方法 当前用的编码格式是utf-8,utf- ...
- clientdataset 做为 单机数据库的 使用 学习
http://blog.csdn.net/waveyang/article/details/34146737 unit Unit3; interface uses Winapi.Windows, Wi ...
- delphi 语法 点滴总结clientdataset
clientdataset 记录数 是从1 开始的. self.ClientDataSet5.RecNo 记录数 可以 读写 赋值. 随意改动. 哈哈 很方便.
- java RMI 远程调用
1.背景 在学习代理模式的过程中接触到了远程调用,jdk有自己的RMI实现,所以这边自己实现了RMI远程调用,并记录下心得. 感受最深的是RMI和现在的微服务有点相似,都是通过"注册中心&q ...
- Common Linux Commands 日常工作常用Linux命令
How to know CPU info cat /proc/cpuinfo arch How to know memory info: cat /proc/meminfo ...
- 关于ES6语法的 一些新的特性
1.新的变量声明 :let :块级作用域,解决全局污染问题 const :常量 ,如π:3.1415927 class :类 .var:弱类型 funciton :方法 , import : 导入参 ...
- 前端项目中使用jsencrypt进行字段加密
前端项目中使用jsencrypt进行字段加密. 使用步骤:①获取公钥②实例化对象③设置公钥④将所需数据进行加密然后返回. 进行一个简单的封装如下 /** * npm install jsencrypt ...
作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。
生成了一大堆其他的表,作用是什么?

Count不用 aggregate进行连接
Avg 平均
Max

# 多到一的查询
# 多对一的关联查询

方法二: 模型类.objects.filter(字段原值).update(要改的值) 返回受影响的行数




