MYSQL 转json
时间: 2025-02-10 09:04:59 浏览: 74
### 将 MySQL 查询结果转换为 JSON 格式的几种方法
#### 方法一:使用 Python 和 `pymysql` 库
通过建立与 MySQL 数据库的连接,执行 SQL 查询并将结果转化为字典列表形式,再利用内置模块 `json` 转换成 JSON 字符串。
```python
import pymysql
import json
connection = pymysql.connect(
host='localhost',
user='root',
password='1234',
database='testd2rq',
charset='utf8mb4'
)
try:
with connection.cursor() as cursor:
sql_query = "SELECT * FROM students"
cursor.execute(sql_query)
result = cursor.fetchall()
columns = [column[0] for column in cursor.description]
rows = []
for row in result:
rows.append(dict(zip(columns, row)))
finally:
connection.close()
json_data = json.dumps(rows, ensure_ascii=False).encode('utf8')
print(json_data.decode())
```
此段代码展示了如何从名为 `students` 的表中获取全部记录,并将其构造成 JSON 数组的形式[^4].
#### 方法二:直接在 MySQL 中实现
自 MySQL 5.7 版本起支持原生 JSON 类型以及一系列用于操作 JSON 文档的功能。可以借助这些特性来简化将查询结果导出成 JSON 流程:
假设有一个包含学生成绩信息的学生表和成绩表,可以通过如下 SQL 语句获得每位学生的各科成绩作为 JSON 对象组成的集合:
```sql
SELECT
s.id,
s.name,
CONCAT('[', GROUP_CONCAT(JSON_OBJECT('subject', c.subject, 'score', c.score)), ']') AS scores
FROM student s
JOIN score c ON s.id = c.student_id
GROUP BY s.id;
```
上述命令会创建一个新的字段 `scores`, 它是由多个 JSON 对象构成的一个字符串表示的数组,其中每个对象代表某一门课程的成绩详情[^2].
#### 方法三:基于 Spark 处理大规模数据集
当面对海量的数据处理需求时,Apache Spark 提供了一种高效的方法来进行分布式计算。下面的例子说明了怎样读取 CSV 文件至 DataFrame 后转储给 Kafka 主题之前先转变为 JSON 表达式。
```scala
val df = spark.read.option("header", "true").csv("path/to/csv")
// Convert the selected columns to a single JSON string per record.
df.select(to_json(struct("*")).alias("value"))
.write
.format("kafka")
.option("kafka.bootstrap.servers", brokerList)
.option("topic", topicName)
.save()
```
这段脚本适用于大数据场景下的 ETL 工作流,在这里不仅限于 MySQL 来源的数据;任何结构化或半结构化的输入都可以被映射到相应的模式之上然后再做进一步变换[^3].
阅读全文
相关推荐
















