微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python将MySQL查询结果转换为JSON

如何解决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 举报,一经查实,本站将立刻删除。