我想监视mySql数据库以获取它的性能更新,因此我执行了一个查询show global status;
这给了我一个类似Uptime, aborted_connections
等的变量列表。
但我想以json格式导出结果,我可以使用python脚本实现吗?
到目前为止,我所做的是,
import csv import json csvfile = open ('./tempp/op.csv','r') jsonfile = open('./tempp/op.json','w') fieldnames = ("Variable_name","Value") reader = csv.DictReader(csvfile,fieldnames) for row in reader: json.dump(row,jsonfile) jsonfile.write('\n')
的问题:
{"Value": null, "Variable_name": "Variable_name\tValue"} {"Value": null, "Variable_name": "Aborted_clients\t0"} {"Value": null, "Variable_name": "Aborted_connects\t7"} {"Value": null, "Variable_name": "Binlog_cache_disk_use\t0"} {"Value": null, "Variable_name": "Binlog_cache_use\t0"} {"Value": null, "Variable_name": "Binlog_stmt_cache_disk_use\t0"} {"Value": null, "Variable_name": "Binlog_stmt_cache_use\t0"}
Edit
根据答案:
我的op.csv文件如下所示:
Variable_name Value
Aborted_clients 0
Aborted_connects 7
Binlog_cache_disk_use 0
Binlog_cache_use 0
Binlog_stmt_cache_disk_use 0
Binlog_stmt_cache_use 0
Bytes_received 31075
Bytes_sent 1891186
Com_admin_commands 445
Com_assign_to_keycache 0
Com_alter_db 0
Com_alter_db_upgrade 0
答案 0 :(得分:2)
试试这个伙伴 -
import csv
import json
rows = []
with open('test.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
rows += [row]
print json.dumps(rows, sort_keys=True, indent=4, separators=(',', ': '))
json.dumps中的参数只是输出格式很好。
因此,输入以下内容 -
Heading1,Heading2,Heading3
Row1Value1,Row1Value2,Row1Value3
Row2Value1,Row2Value2,Row2Value3
Row3Value1,Row3Value2,Row3Value3
你应该得到这个 -
[
{
"Heading1": "Row1Value1",
"Heading2": "Row1Value2",
"Heading3": "Row1Value3"
},
{
"Heading1": "Row2Value1",
"Heading2": "Row2Value2",
"Heading3": "Row2Value3"
},
{
"Heading1": "Row3Value1",
"Heading2": "Row3Value2",
"Heading3": "Row3Value3"
}
]
答案 1 :(得分:1)
Pandas是非常灵活的数据库。您可以在此处下载:LINK
一旦你拥有它:
import pandas as pd
from pandas.io import sql
import sqlite3
conn = sqlite3.connect('example.db')
e = pd.read_sql('select * from my_table;',conn)
b = e.to_json()
print(b)
我正在使用sqlite3,但我认为它对所有sqls都是通用的。
还有函数:pd.read_sql_table
直接从表中读取,但是你需要炼金术。
答案 2 :(得分:1)
针对我自己的问题发布解决方案,以帮助此页面的未来访问者:
使用以下脚本将mySql
查询输出的结果转换为JSON并将其保存到文件中。
但在此之前安装mySql连接器:
sudo pip install MySQL-python
并使用以下脚本。
import MySQLdb
import json
conn = MySQLdb.connect(host = "localhost", user="root", passwd="your_password_here")
cursor = conn.cursor()
cursor.execute("SHOW GLOBAL STATUS")
rs = cursor.fetchall()
result = dict(rs)
with open('result.json', 'w') as f:
json.dump(result, f)