sqlite相关操作有:
- 1.将游标获取的Tuple根据数据库列表转换为Dict
- 2.获取(连接)数据库
- 3.执行SQL语句不返回数据结果
- 4.执行用于选择数据的SQL语句,参数one代表是否取第一条
- 5.关闭连接(在当前app上下文销毁时关闭连接)
写成函数形式,便于重复调用,使用pymysql,稍加修改也可以用于mysql数据库。
# 数据库操作相关函数
import sqlite3
from flask import Flask, g
# 数据库db文件url,换了环境后注意修改!!!
DATABASE_URL = r'YOURPATH\safe.db'
app = Flask(__name__)
# 数据库系列操作
# 1.将游标获取的Tuple根据数据库列表转换为Dict
def make_dicts(cursor, row):
return dict((cursor.description[i][0], value) for i, value in enumerate(row)) # enumerate既要遍历索引又要遍历元素时
# 2.获取(连接)数据库
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE_URL)
db.row_factory = make_dicts
return db
# 3.执行SQL语句不返回数据结果
def execute_sql(sql, prms=()):
c = get_db().cursor()
c.execute(sql, prms)
c.connection.commit()
# 4.执行用于选择数据的SQL语句,参数one代表是否取第一条
def query_sql(sql, prms=(), one=False):
c = get_db().cursor()
result = c.execute(sql, prms).fetchall()
c.close()
return (result[0] if result else None) if one else result
# 5.关闭连接(在当前app上下文销毁时关闭连接)
@app.teardown_appcontext
def close_connection(exception):
db = getattr(g, '_database', None)
if db is not None:
db.close