python - 使用 Python 数据库中的数组创建一个有效的 JSON
问题描述
我正在尝试使用 Python 获取这样的 JSON 文件,并从 Linux 系统上的 MariaDB 获取数据。我怎样才能做到这一点?
{
"data": [
{
"city": "A",
"age": "21"
},
{
"city": "B",
"age": "45"
}
]
}
这是我的 Python 文件的外观:
import csv
import datetime
import mysql.connector as mariadb
import simplejson
import os
mariadb_connection = mariadb.connect(user='user', password='passwd', database='db1')
cursor = mariadb_connection.cursor()
cursor.execute("SELECT name,age FROM persons ORDER BY name ASC")
data = cursor.fetchall()
names_as_dict = []
for row in data:
name_as_dict = {
'name' : row[0],
'age' : row[1]
}
names_as_dict.append(name_as_dict)
with open('myfile.json', 'w') as f:
simplejson.dump(names_as_dict, f)
该文件的输出:
[
{
"city": "A",
"age": "21"
},
{
"city": "B",
"age": "45"
},
...
]
解决方案
你可以用额外的字典来包装它
result = {'data': [{'name' : row[0],'age' : row[1]} for row in data]}
推荐阅读
- python - AWS EC2 实例中的 python 请求。HTTPConnectionPool 错误
- javascript - 从 Parent 调用子组件的方法是否是反模式,为什么?
- laravel - laravel如何实现paypal链式支付
- javascript - Array.prototype.sort() 只有一个字符串的返回语句
- python-2.7 - 在 numpy 矩阵中交换时出现“形状不匹配错误”
- excel - XML -> 使用编码 UTF-8 的 XSLT 不适用于 Microsoft Excel - 为什么?
- python - numpy 使用前一行的乘积值作为输入,将行与数组的后续行相乘
- php - 数组 PHP 中的多个条件
- python - if not 3 in [1,2,4,5]: 和 if 3 not in [1,2,4,5] 有什么区别?
- qt - 将视频从 QByteArray 保存到 MP4 QT/C++