Flask是一个轻量级的Web应用框架,使用Python编写。SQLite是一种嵌入式数据库,不需要单独的服务器进程,数据库存储在一个文件中,适合小型应用或作为开发环境。
以下是一个简单的Flask应用,展示了如何使用SQLite进行数据库查询:
from flask import Flask, jsonify
import sqlite3
app = Flask(__name__)
@app.route('/users', methods=['GET'])
def get_users():
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
conn.close()
return jsonify(users)
if __name__ == '__main__':
app.run(debug=True)
原因:如果在处理请求时忘记关闭数据库连接,可能会导致资源泄漏。
解决方法:确保每次数据库操作后都关闭连接。可以使用上下文管理器(with
语句)来自动管理连接。
@app.route('/users', methods=['GET'])
def get_users():
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
return jsonify(users)
原因:直接将用户输入拼接到SQL查询中,可能会导致SQL注入攻击。
解决方法:使用参数化查询来防止SQL注入。
@app.route('/user/<int:user_id>', methods=['GET'])
def get_user(user_id):
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
user = cursor.fetchone()
return jsonify(user)
通过以上信息,你应该能够理解Flask和SQLite的基本概念、优势、类型、应用场景以及常见问题的解决方法。
DB TALK 技术分享会
云+社区沙龙online [国产数据库]
DBTalk
DB TALK 技术分享会
TDSQL-A技术揭秘
云+社区沙龙online [技术应变力]
DB TALK 技术分享会
腾讯云消息队列数据接入平台(DIP)系列直播
领取专属 10元无门槛券
手把手带您无忧上云