一: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. chrome flash 自动暂停问题

    chrome flash 尺寸小于398*298时,只要宽和高某一个值小于对应值就会自动暂停,出现这个圆形的播放按钮.(估计是当广告处理了...) 将尺寸调大即可.

  2. Delphi XE2 之 FireMonkey 入门(22) - 数据绑定: BindingSource、BindingName、FindBinding()、Binding[]

    在窗体上添加 TrackBar1.Edit1.Label1, 然后设置属性(可在设计时): procedure TForm1.FormCreate(Sender: TObject); begin   ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第3节 接口_1_接口概述与生活举例

  4. 锐捷网络自动连接python脚本

    1 实现锐捷网络的连接,当断开后自动重连 import os import sys import time ip = 'www.baidu.com' print('开始ping百度') backinf ...

  5. postman连接mysql执行操作

    postman也可以连接mysql 目录 1.安装 2.启动服务 3.执行sql语句 1.安装 想要postman连接mysql,需要安装xmysql,启动该服务,然后才可以调用. 预置条件:完成no ...

  6. 练习3-python-创造百万条数据库数据

    有时候需求大批量的数据做测试支撑,如果使用传统的添加数据的方式可能比较耗费时间,利用python可以轻松的完成这项任务,还可以后续维护使用脚本. 方法1:insert into table selec ...

  7. 【ABAP系列】SAP ABAP WS_DELIVERY_UPDATE 修改数量、过账日期并发货过账

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP WS_DELI ...

  8. 【EWM系列】SAP 关于EWM的WT增强简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 关于EWM的WT增强简介   ...

  9. JAVA AOP面向切面编程与动态代理

    1.静态代理和动态代理的概念:   在我的另一篇博文:Java 静态代理和动态代理 中有讲到,这里就不做赘述了. JDK动态代理它的好处理是可以为我们生成任何一个接口的代理类,并将需要增强的方法织入到 ...

  10. [10期]浅谈SSRF安全漏洞

    引子:SSRF 服务端请求伪造攻击 很多web应用都提供从其他服务器上获取数据的功能.使用用户指定的URL,web应用可以从其他服务器获取图片,下载文件,读取文件内容等. 这个功能被恶意使用的话,可以 ...