快速用http框架搞定json数据,从数据库拿东西也不难
- 问答
- 2026-01-11 00:45:02
- 1
想用HTTP框架快速搞定JSON数据,并且从数据库里拿点东西,这事儿其实没听起来那么复杂,咱们就把它当成是去快餐店点餐,你点餐(发请求),服务员(你的程序)去后厨(数据库)拿食物(数据),然后打包成餐盒(JSON格式)递给你,整个过程要快,要省事儿。
你得选个顺手的“厨房”,也就是编程语言和框架,Python里的Flask就是个非常好的选择,因为它特别简单,几乎不用学就能上手,就像你学做第一道菜,比如西红柿炒鸡蛋,Flask就是那口不粘锅,让你不容易搞砸。
根据Flask官方文档的入门指南,你装好Flask之后,写一个最简单的应用只需要几行代码。

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
但这只是返回文本,我们要的是JSON,别急,Flask里有个叫jsonify的工具,特别好用,还是根据Flask的文档,你稍微改一下上面的代码:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/user/<user_id>')
def get_user(user_id):
# 先假装我们从数据库拿到了一个用户信息
user = {'id': user_id, 'name': '张三', 'age': 30}
return jsonify(user)
你看,现在你访问/user/123这个网址,浏览器就会直接收到一个标准的JSON数据:{"age": 30, "id": "123", "name": "\u5f20\u4e09"}。jsonify这个函数自动帮你把字典变成了JSON,还设置好了正确的HTTP头,告诉对方“我这是JSON数据”,这一步,你就已经把“搞定JSON数据”这件事完成了一大半。
接下来是“从数据库拿东西”,数据库听起来吓人,但其实对于刚开始来说,你可以把它想象成一个超级厉害的Excel表格,能存很多数据,而且能快速查找,SQLite是最简单的选择,因为它就是一个文件,不需要安装复杂的数据库软件,特别适合练手。

Python标准库里的sqlite3模块可以直接操作SQLite数据库,根据Python官方文档关于sqlite3的说明,你可以很方便地连接数据库、执行命令,假设我们有一个存用户信息的表users,里面有id, name, age这几个字段。
我们把上面的例子升级一下,让它真的去数据库里拿数据:
from flask import Flask, jsonify
import sqlite3
app = Flask(__name__)
# 一个辅助函数,用来连接数据库
def get_db_connection():
conn = sqlite3.connect('database.db')
# 这样返回的数据是字典形式,更容易处理
conn.row_factory = sqlite3.Row
return conn
@app.route('/user/<int:user_id>')
def get_user(user_id):
conn = get_db_connection()
# 执行一个SQL查询,问数据库要对应id的用户信息
user = conn.execute('SELECT * FROM users WHERE id = ?', (user_id,)).fetchone()
conn.close()
if user is None:
# 如果没找到用户,返回一个错误信息和404状态码
return jsonify({'error': 'User not found'}), 404
# 把找到的数据(sqlite3.Row对象)转换成字典,然后jsonify
return jsonify(dict(user))
这段代码干了啥呢?你访问/user/1,它就会去database.db这个数据库文件里的users表格中,寻找id是1的那一行,找到了,就把那一行的所有数据(名字、年龄等)转换成字典,再通过jsonify变成JSON返回给你,如果找不到,就返回一个错误的JSON信息和404状态码,告诉客户端“你要的东西我没找到”。

这里的关键点就是那句SQL查询'SELECT * FROM users WHERE id = ?',这就像是你对数据库说:“把users表里,id等于我给你的这个数字的所有列(*代表所有列)都给我找出来。”那个问号是为了安全,防止一种叫“SQL注入”的攻击手段,Flask文档和数据库操作指南里都会强调这一点,非常重要。
你可能注意到,我们得自己写SQL语句,这可能是唯一有点“技术”味的地方,但SQL的基础操作非常直白,SELECT(选择)、FROM(从哪)、WHERE(条件)这几个词猜也能猜个大概,对于简单的增删改查,学四五句SQL就足够应付很多场景了。
为了让这个例子能真正跑起来,你还需要事先创建数据库和表,你可以写一个单独的Python脚本来做这个事,
import sqlite3
conn = sqlite3.connect('database.db')
conn.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)')
# 插入点测试数据
conn.execute('INSERT OR IGNORE INTO users (id, name, age) VALUES (1, "张三", 30)')
conn.execute('INSERT OR IGNORE INTO users (id, name, age) VALUES (2, "李四", 25)')
conn.commit()
conn.close()
运行这个脚本,database.db文件和users表就准备好了,里面还有两条数据。
快速上手的核心就是:用Flask这种轻量框架接收HTTP请求,用jsonify轻松制造JSON响应,用SQLite和简单的SQL语句完成最基本的数据查询,整个过程,你不需要理解复杂的概念,就像搭积木一样,把这几块拼在一起,一个能提供JSON API并从数据库读取数据的后端服务就出来了,剩下的就是根据你的具体需求,去丰富SQL查询的条件和返回的JSON内容了。
本文由盈壮于2026-01-11发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/78381.html
