mysql 字段 转 json
时间: 2025-01-23 13:11:06 浏览: 50
### 将 MySQL 查询结果的字段转换为 JSON 格式
#### 使用内置 JSON 函数
MySQL 提供了多种内置函数用于处理 JSON 数据。`JSON_OBJECT()` 和 `JSON_ARRAYAGG()` 是两个常用的函数,可以用来构建复杂的 JSON 结构。
对于简单的键值对形式的数据,可以直接使用 `JSON_OBJECT()` 来创建 JSON 对象:
```sql
SELECT JSON_OBJECT('id', id, 'name', name) AS student_info FROM students;
```
当需要聚合多条记录到同一个 JSON 数组内时,则可采用 `JSON_ARRAYAGG()` 函数[^1]:
```sql
SELECT
s.id,
JSON_ARRAYAGG(JSON_OBJECT(
'subject', c.subject_name,
'score', sc.score)) as scores
FROM
students s
JOIN
scores sc ON s.id = sc.student_id
JOIN
subjects c ON sc.subject_id = c.id
GROUP BY
s.id;
```
上述 SQL 语句会把每位学生的各个科目分数汇总成一个 JSON 数组的形式返回给客户端应用。
#### Flask 应用程序中的实现方法
在基于 Flask 的 Web API 中,通常会在 Python 层面进一步加工来自数据库原始查询结果,并将其序列化为标准 JSON 字符串以便通过 HTTP 协议传输至前端或其他服务端点。此时可以通过 SQLAlchemy ORM 或者 pymysql 等库执行原生 SQL 并获取游标的描述信息来动态映射列名与实际数据之间的关系[^2]。
下面是一个简单例子展示如何利用 Flask 返回 JSON 格式的响应:
```python
from flask import Flask, jsonify
import mysql.connector
app = Flask(__name__)
@app.route('/api/students')
def get_students():
conn = mysql.connector.connect(user='root', password='', host='localhost', database='school')
cursor = conn.cursor(dictionary=True)
query = """
SELECT
s.id,
JSON_ARRAYAGG(JSON_OBJECT(
'subject', c.subject_name,
'score', sc.score)) as scores
FROM
students s
JOIN
scores sc ON s.id = sc.student_id
JOIN
subjects c ON sc.subject_id = c.id
GROUP BY
s.id;
"""
cursor.execute(query)
result = cursor.fetchall()
return jsonify(result), 200
if __name__ == '__main__':
app.run(debug=True)
```
此代码片段展示了如何连接 MySQL 数据库并执行带有 JSON 处理功能的复杂查询,最后将得到的结果封装进 Flask 的 `jsonify()` 方法中以生成恰当格式化的 JSON 响应体发送出去[^3].
阅读全文
相关推荐



















