一: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交互的更多相关文章

  1. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  2. Django使用MySQL数据库的流程

    Django使用MySQL数据库的流程 手动创建一个MySQL数据库 配置数据库 ENGINE MySQL NAME 数据库的名字 HOST ip PORT 3306 USER 用户名 PASSWOR ...

  3. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  4. python——django使用mysql数据库(一)

    之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...

  5. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

  6. Django 连接 MySQL 数据库及常见报错解决

    目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...

  7. 在Eclipse中使用JDBC访问MySQL数据库的配置方法

    在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...

  8. Django 连接mysql数据库中文乱码

    Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566   版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...

  9. Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'

    Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?' 一.原因 因为Python版本问题,MySQLdb ...

随机推荐

  1. leetcode 62. 不同路径(C++)

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多 ...

  2. Delphi XE2 之 FireMonkey 入门(8) - TImage

    TImage 主要成员: { 属性 } Bitmap              : TBitmap;        //图像 BitmapMargins        : TBounds;      ...

  3. B-/B+树 MySQL索引结构

    索引 索引的简介 简单来说,索引是一种数据结构 其目的在于提高查询效率 可以简单理解为“排好序的快速查找结构” 一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在中磁 ...

  4. 一些输出、处理细节&注意点

    https://blog.csdn.net/qq_41071646/article/details/79953476 输出百分比的时候,结果需要加上一个EPS(1e-6)四舍五入保证精度. 卡精度—— ...

  5. Apache httpclient拦截器对请求进行签名

    Apahce httpclient 提供HttpRequestInterceptor和HttpResponseInterceptor两种拦截器分别处理请求和响应数据,下面讲一下如何对http请求进行拦 ...

  6. 红黑树插入操作---以JDK 源码为例

    红黑树遵循的条件: 1.根节点为黑色. 2.外部节点(叶子节点)为黑色. 3.红色节点的孩子节点为黑色.(由此,红色节点的父节点也必为黑色) 4.从根节点到任一外部节点的路径上,黑节点的数量相同. 节 ...

  7. 面试一个 3 年 Java 程序员,一个问题都不会!

    大家周末愉快,当你看到这篇文章的时候,事情已经过去几天了. 刚从洽谈室走出来,心情很复杂! 栈长面试过很多人,不乏知识渊博.技能顶尖的选手,但从未遇到过工作了三年,却一个问题都答不上来.. 这场史无前 ...

  8. 关于java的数组

    一定要写成 int[] arr = new int[30] 这样每个元素默认为0; 介样子的 如果写成 int[] arr = {1,2,3,4}; 那么他的长度就是4

  9. Knight Moves (双向bfs)

    # 10028. 「一本通 1.4 例 3」Knight Moves [题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [算法 ...

  10. 2019 Multi-University Training Contest 7 - 1006 - Snowy Smile - 线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=6638 偷学一波潘哥的二维离散化和线段树维护最大子段和. 思路是枚举上下边界,但是不需要从左到右用最大子段和dp. ...