django mysql 语法_Django——数据库的一系列操作

原标题:Django——数据库的一系列操作

一:配置

在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库。

DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path. join(BASE_DIR, 'db.sqlite3'),}}

使用MySQL数据库首先需要安装驱动程序

pipinstall PyMySQL

在Django的工程同名子目录的**init.py**文件中添加如下语句

frompymysql importinstall_as_MySQLdbinstall_as_MySQLdb

作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。

修改DATABASES配置信息

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1', # 数据库主机'PORT': 3306, # 数据库端口'USER': 'root', # 数据库用户名'PASSWORD': 'mysql', # 数据库用户密码'NAME': 'django_demo'# 数据库名字}}

在MySQL中创建数据库

createdatabasedjango_demo defaultcharset=utf8;

1)数据库表名

模型类如果未指明表名,Django默认以 小写app应用名_小写模型类名 为数据库表名。

可通过db_table 指明数据库表名。

2)关于主键

django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。

默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。

3)属性命名限制

不能是python的保留关键字。

不允许使用连续的下划线,这是由django的查询方式决定的。

定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:

属性=models.字段类型(选项)

2、迁移

将模型类同步到数据库中。

1)生成迁移文件

pythonmanage.pymakemigrations

2)同步到数据库中

pythonmanage.pymigrate

二 .演示工具使用

1、shell工具

pythonmanage.pyshel

2、查看MySQL数据库日志

tail -f /var/ log/mysql/mysql.log # 可以实时查看数据库的日志内容# 如提示需要sudo权限,执行# sudo tail -f /var/log/mysql/mysql.log

三.数据库操作—增、删、改、查

1、增加

增加数据有两种方法。

1)save

2)create

通过模型类.objects.create保存。

2、查询

2.1 基本查询

get 查询单一结果,如果不存在会抛出模型类.DoesNotExist异常。

all 查询多个结果。

count 查询结果数量。

2.2 过滤查询

实现SQL中的where功能,包括:

filter 过滤出多个结果

exclude 排除掉符合条件剩下的结果

get 过滤单一结果

对于过滤条件的使用,上述三个方法相同,故仅以filter进行讲解。

过滤条件的表达语法如下:属性名称__比较运算符=值

属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线。

1)相等

exact:表示判等。

2)模糊查询

contains:是否包含。

说明:如果要包含%无需转义,直接写即可。

3) 空查询

isnull:是否为null。

4) 范围查询

in:是否包含在范围内。

5)比较查询

gt 大于 (greater then)

gte 大于等于 (greater then equal)

lt 小于 (less then)

lte 小于等于 (less then equal)

**不等于的运算符,使用exclude过滤器。

6)日期查询

year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。

F对象

之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?答:使用F对象,被定义在django.db.models中。语法如下:F(属性名)

Q对象

多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。

**如果需要实现逻辑或or的查询,需要使用Q对象结合|运算符,Q对象被义在django.db.models中。

聚合函数

使用aggregate过滤器调用聚合函数。聚合函数包括:Avg 平均,Count 数量,Max 最大,Min 最小,Sum 求和,被定义在django.db.models中。注意aggregate的返回值是一个字典类型,格式如下:

{‘属性名__聚合类小写’:值}如:{‘bread__sum’:3}

2.3 排序

使用order_by对结果进行排序

2.4 关联查询

由一到多的访问语法:关联过滤查询

由多模型类条件查询一模型类数据语法如下:

关联模型类名小写__属性名__条件运算符=值

注意:如果没有"__运算符"部分,表示等于。

由一模型类条件查询多模型类数据语法如下:

一模型类关联属性名__一模型类属性名__条件运算符=值

注意:如果没有"__运算符"部分,表示等于。

3、修改

修改更新有两种方法

1)save:修改模型类对象的属性,然后执行save方法

2)update:使用模型类.objects.filter.update,会返回受影响的行数

4、删除

删除有两种方法

1)模型类对象delete

2)模型类.objects.filter.delete返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值