Django框架中的mysql数据库

1、链接数据库

mysql,sqlserver,oracle...
django默认只能链接关系型数据库

1、安装依赖的库

可以使用的库:1、pymysql
            2、python_mysql(不稳定)
            3、mysqlclient(配置麻烦)
安装pymysql:pip install pymysql
如果出现timeout超时可以使用其他的资源下载:pip install 模块名 -i http://pypi.douban.com/simple

2、导入库

在__init__文件中编写:
# 导入pymysql模块
import pymysql
pymysql.install_as_MySQLdb()

3、在setting的database中配置mysql的连接

'ENGINE':'django.db.backends.mysql',    设置驱动
'NAME':'week01',    设置数据库名
'USER':'root',      设置用户名
'PASSWORD':'dxx1123',   设置密码
'HOST':'localhost',     设置主机地址
'PORT':3306,    设置端口号

4、注意:不要忘记了在数据库中创建该库

create  database    数据库名    charset='utf8'

5、连接mysql数据库

点击左侧database--- + ---data source ---数据库类型(如:mysql)--- 设置 账户 密码 主机(注意:如果对mysql设置远程连接,需要使用远程连接的账号密码)

6、测试程序是否能连接

1、执行迁移
    python manage.py makemigrations
    python manage.py migrate
2、看到自动生成的表即可

2、orm 对象关系隐射–思想:相当于一个翻译机

object  relational  mapping

1、开发人员不需要写复杂的sql语句,直接调用对应的方法即可

2、开发人员不需要封装查询结果,查询结果直接就是对象,可以直接使用

3、如果开发人员需要更换数据库,不需要更改任何代码,直接修改数据库的连接即可

3、创建一个表

1、需要在model模块中创建一个类

注意该类必需继承models.Model
注意:表名默认是  应用名_类名

2、定义属性名—属性需要与表中字段对应

字段名即属性名
字段的数据类型
字段的约束类型

3、案例:

# 定义模型
# 注意:执行迁移后,才会在数据库自动创建对应的表
# 默认的表名为:应用名_类名 类名会自动转换成全小写
# 默认会自动创建主键id,如果使用AutoField则不会自动创建
class Person(models.Model):
    p_name = models.CharField(max_length = 20,null=False,unique=True)
    p_age = models.IntegerField(default = 10)
    p_sex = models.BooleanField(default = True)

表的结构是可以修改的,修改后,需要重新迁移才能生效,最好不要修改
修改表名:
可以使用(内部类):
class Meta:
    db_table = '表名'
修改属性名:
默认的字段名就是定义的属性名
可以使用 db_column = '字段名' 

4、增加一个数据

1、创建一个对象
2、设置属性
3、保存数据   对象名.save()

5、删除数据

mysql语句:delete from 表名 where 条件
1、要删除数据,前提条件是先查询到对应的数据
2、删除:
可以直接删除多个结果,也可以直接删除一个
查询结果.delete()

6、修改数据

mysql语句:update 表名 set 字段名=数据.. where 条件
1、要修改数据,前提条件也是先查询到对应的数据
2、修改:
对象名.属性名 = 值
对象名.save()

7、查询数据

1、查询方法

格式:类名.objects.方法   ---支持链式调用
1、有多条结果的
all()   获取所有的结果
filter(条件)  按照条件筛选数据
exclude(条件)  筛选出满足条件以外的数据
2、单个结果的
first()  获取结果集的第一个
last()  获取结果集的最后一个
get()   获取一个结果
注意:有且只有一个结果的时候使用get()才可以,如果结果超过一个或没有,程序都会出错
3、其他
count()  获取结果集的数量
order_by("-属性名")    表示按照属性名对应的值排序,默认是升序,-属性名表示降序排序
如果是字符类型的数据,是按照字符对应的ACSII码来排序的,一个字符一个字符的比较,如:'aac'  'abc' ,'aac'小
exists()    判断查询结果集中是否有数据
values()    获取结果集的数据,该数据是类似字典的形式,方便操作

2、条件中的运算符

格式:属性名__运算符 = 值   (两个下划线)
运算符:
    gt  大于
    gte 大于等于
    lt  小于
    lte 小于等于
    =   等于 exact
    不等于 exclude(条件)

    isNull  是空的数据

    startwith   查询以某个字符开始
    endwith     查询以某个字符结果
    contain     查询包含某个字符

    i 是ignore的简写,忽略大小写
    istartwith  查询以某个字符开始
    iendwith        查询以某个字符结果
    icontain        查询包含某个字符

    in  成员运算符,是否是集合中值的其中一个,满足一个就符号条件

    特殊用法** pk = 值  pk是主键的简写

3、Q与F对象

1、Q对象,用来帮助实现 逻辑运算符
需要倒包
& 且     如:...filter(Q(p_age__gt=90)&Q(p_age__lt=95))
| 或     如:...filter(Q(p_name='小明')|Q(p_name='小强'))
~ 非        如:...filter(~Q(p_age__lte=100))

2、F对象,用来帮助自己属性与自己的属性比较
如:需求:实现年龄比id小的数据
persons=Person.objects.filter(p_age__lt=F('id'))

4、查询结果的切片

格式:结果集[start:stop]  左闭右开
截取从start位置到stop位置的数据

5、聚合函数的使用

注意:1、大小写    2、倒包
Max  最大值
Min  最小值
Avg  平均值
Sum  总和
如:求年龄最大的/最小的
res=Person.objects.all().aggregate(Max('p_age'))
res=Person.objects.all().aggregate(Min('p_age'))
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django连接MySQL数据库需要进行以下步骤: 1. 安装MySQL驱动程序 在Django连接MySQL之前,需要先安装MySQL数据库的Python驱动程序。常用的有mysqlclient和pymysql两种驱动程序。可以使用pip命令进行安装,比如: ``` pip install mysqlclient ``` 2. 在settings.py配置数据库连接参数 在Django项目的settings.py文件,需要配置数据库连接参数。具体来说,需要设置以下参数: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'database_name', 'USER': 'username', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', }, } } ``` 其,ENGINE指定使用的数据库驱动程序,这里是django.db.backends.mysql;NAME指定数据库名称;USER和PASSWORD指定连接数据库的用户名和密码;HOST指定数据库所在的主机名或IP地址;PORT指定数据库服务器的端口号,默认为3306;OPTIONS设置数据库的一些其他参数,比如字符集。 3. 进行数据迁移 在设置好数据库连接参数之后,需要进行数据迁移(migrate)操作,以创建对应的数据库表。可以使用以下命令进行数据迁移: ``` python manage.py makemigrations python manage.py migrate ``` 4. 使用ORM操作数据库 在以上步骤完成之后,就可以使用Django的ORM进行数据库操作了。比如,可以定义一个模型类来映射数据库表,并进行查询、插入、更新、删除等操作。具体用法可以参考Django官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值