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 ...
随机推荐
- deepin 安装tar.gz
由于网上推荐的比较多的安装方式是:sudo apt-get install mysql-server mysql-client,这个安装的是mysql5.7,既然都安装了就要安装最新的,所以从官网下载 ...
- 06 使用bbed提交delete的数据--01
使用bbed模拟delete提交操作 --session 1 TEST@ orcl )); Table created. TEST@ orcl ,'AAAAA'); row created. TEST ...
- oracle 11g 数据库恢复技术 ---02 控制文件
oracle 11g 数据库恢复技术 ---02 控制文件 SYS@ orcl >show parameter control_file NAME TYPE VALUE ------------ ...
- PHP上传文件到阿里云OSS,nginx代理访问
1. 阿里云OSS创建存储空间Bucket(读写权限为:公共读) 2. 拿到相关配置 accessKeyId:********* accessKeySecret:********* endpoint: ...
- pyenv python 版本控制
经常遇到这样的情况: 系统自带的Python是2.x,自己需要Python 3.x,此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存,pye ...
- ElasticSearch 基础 2
================================== 高级查询 =========================== ========== 子条件查询 =========== _sc ...
- [Web 前端] 014 css 盒子模型
1. 简介 元素在页面中显示成一个方块,类似一个盒子 把元素叫做盒子,设置对应的样式分别为 盒子的边框(border) 盒子内的内容和边框之间的间距(padding) 盒子与盒子之间的间距(margi ...
- Mybatis-第N篇配置log4j1、log4j2打印执行的sql语句
1.log4j1配置 目录结构: conf.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...
- Git-第三篇廖雪峰Git教程学习笔记(2)回退修改,恢复文件
1.工作区 C:\fyliu\lfyTemp\gitLocalRepository\yangjie 2.版本库 我们使用git init命令创建的.git就是我们的版本库.Git的版本库里存了很多东西 ...
- spring-第十五篇之AOP面向切面编程之AspectJ框架简单应用
1.去官方网站下载aspectj-1.8.0.jar 2.在jar包目录启动cmd,执行java -jar aspectj-1.8.0.jar,Next 3.检查JAVA_HOME路径是否正确,如果不 ...