您的位置:首页 > 数据库 > SQL

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

2020-07-02 17:46 405 查看

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数据库配置完成。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: