如何解决Python将MySQL查询结果转换为JSON
您可以使用游标描述来提取行标题: row_headers=[x[0] for x in
cursor.description]
execute语句之后。然后,您可以将其与sql的结果一起压缩以生成json数据。因此,您的代码将类似于:
from flask import Flask
from flask.ext.MysqLdb import MysqL
import json
app = Flask(__name__)
app.config['MysqL_HOST'] = '127.0.0.1'
app.config['MysqL_USER'] = 'root'
app.config['MysqL_PASSWORD'] = 'password'
app.config['MysqL_DB'] = 'hello_db'
MysqL = MysqL(app)
@app.route('/hello')
def index():
cur = MysqL.connection.cursor()
cur.execute('''SELECT * FROM Users WHERE id=1''')
row_headers=[x[0] for x in cur.description] #this will extract row headers
rv = cur.fetchall()
json_data=[]
for result in rv:
json_data.append(dict(zip(row_headers,result)))
return json.dumps(json_data)
if __name__ == '__main__':
app.run(debug=True)
在return语句就可以使用jsonify
,而不是json.dumps
由RickLan的意见建议。
解决方法
我正在尝试实现REST API,其中一部分是将数据格式化为json。我能够从mysql数据库中检索数据,但是我收到的对象不是我期望的。这是我的代码
from flask import Flask
from flask.ext.mysqldb import MySQL
app = Flask(__name__)
app.config['MYSQL_HOST'] = '127.0.0.1'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'hello_db'
mysql = MySQL(app)
@app.route('/hello')
def index():
cur = mysql.connection.cursor()
cur.execute('''SELECT * FROM Users WHERE id=1''')
rv = cur.fetchall()
return str(rv)
if __name__ == '__main__':
app.run(debug=True)
结果:
((1L,u'my_username',u'my_password'),)
我如何实现返回像这样的json格式:
{
"id":1,"username":"my_username","password":"my_password"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。