Django学习记录(5)Django中Mysql数据库的集成

Django-MySQL数据库的集成

Django默认集成的是SQLite数据库

在settings.py中配置MySQL连接

需要注意的是django中默认的配置文件是global_settings.py 而不是项目文件中的settings.py
1.安装mysqlclient扩展包
pip install mysqlclient
2. 修改settings.py配置文件中的DATABASES

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
        'NAME':'example', # 数据库名称
        "HOST": "localhost", # 主机地址
        "PORT": 3306, # 端口号
        "USER": "example", # 用户名
        "PASSWORD": "example", # 密码
        "ATOMIC_REQUEST": "True" # 事务的原子性
    }

3.配置操作数据库的文件db.py

from django.db import connection as conn


def update(sql, args=None):
    """
    支持 增、删、改 操作,
    新增返回 主键, 修改和删除 返回 影响的行数
    :param sql:
    :param args:
    :return:
    """
    # 获取游标
    with conn.cursor() as cursor:
        # 执行SQL
        rowcount = cursor.execute(sql, args)
        return cursor.lastrowid if cursor.lastrowid else rowcount


def query_one(sql, args=None):
    """
    查询单条记录,返回一个 字典格式的数据,如果查不到数据,返回 None
    :param sql:
    :param args:
    :return:
    """
    # 获取游标
    with conn.cursor() as cursor:
        # 执行SQL
        rowcount = cursor.execute(sql, args)
        if rowcount > 1:
            raise Exception("query_one 期望返回一条数据、但实现返回了{}条记录".format(rowcount))

        # 获取 结果集
        data = cursor.fetchone()

        if data is not None:
            # 获取查询的 字段
            columns = [column[0] for column in cursor.description]
            data = dict(zip(columns, data))
        return data


def query_list(sql, args=None):
    """
    查询多条记录,返回一个 列表格式的数据,如果查不到数据,返回 []
    :param sql:
    :param args:
    :return:
    """
    # 获取游标
    with conn.cursor() as cursor:
        # 执行SQL
        cursor.execute(sql, args)
        # 获取 结果集
        data = cursor.fetchall()
        # 获取查询的 字段
        columns = [column[0] for column in cursor.description]
        data = [dict(zip(columns, d)) for d in data]
        return data


def call_proc(proc_name, args=None, callback=None):
    """
    调用存储过程
    :param proc_name:
    :param args:
    :param callback : 返回存储过程的回调函数,内置cursor参数
    :return:
    """
    # 获取游标
    with conn.cursor() as cursor:
        # 执行 存储过程
        cursor.callproc(proc_name, args)
        if callback is not None and type(callback) != type(call_proc):
            raise Exception("callback(cursor)必须是一个函数!")
        if callback is not None:
            return callback(cursor)

自此,MySQL数据库配置完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值