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 ...
随机推荐
- php简单随机实现发红包程序
前言: 使用PHP发红包,当我们输入红包数量和总金额后,PHP会根据这两个值进行随机分配每个金额,保证每个人都能领取到一个红包,每个红包金额不等,就是要求红包金额要有差异,所有红包金额总额应该等于总金 ...
- vue中动态加载图片路径的方法
assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.p ...
- 《SQL Server 2012 T-SQL基础》读书笔记 - 1.背景
几个缩写的全称:Data Definition Language (DDL), Data Manipulation Language (DML), and Data Control Language ...
- ORACLE DG 库参数db_file_name_convert和log_file_name_convert的作用
https://www.cnblogs.com/xqzt/p/5089826.html ORACLE DG 库参数db_file_name_convert和log_file_name_convert的 ...
- linux基本目录
/ 根目录: dev : 存放抽象硬件 ib : 存放系统库文件 sbin : 存放特权级二进制文件 var : 存放经常变化的文件 home : 普通用户目录 etc : 存放配置文件目录 /etc ...
- python 多进程读写文件
import time from multiprocessing import Process, JoinableQueue, cpu_count import csv ####处理一条数据的方法 d ...
- VMware 虚拟化编程(12) — VixDiskLib Sample 程序使用
目录 目录 前文列表 vixDiskLibSample 安装 Sample 程序 Sample 程序使用方法 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/V ...
- node+express POST请求
// POST 登录 app.post('/login', function (req, res) { // 定义了一个post变量,用于暂存请求体的信息 let [post,addSql,addSq ...
- Spring004--Spring AOP(mooc)
一.Spring AOP概览 1.1.AOP(面向切面编程)是什么 1. AOP是一种编程范式,而不是编程语言. 2.解决特写问题,不能解决所有问题 3.是OOP的补充,不是替代 除了面向切面编程,还 ...
- python+selenium的WebElement对象操作
webelement对象操作 webelement对象是selenium中所有元素的父类,也就是webelement对象拥有的方法,其它元素对象都会有: 只是不同的对象在调用特定方法时,效果是不一样的 ...