Bạn có thể sử dụng mô tả con trỏ để trích xuất tiêu đề hàng:row_headers=[x[0] for x in cursor.description]
sau câu lệnh thực thi. Sau đó, bạn có thể nén nó với kết quả là sql để tạo ra dữ liệu json. Vì vậy, mã của bạn sẽ giống như sau:
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)
Trong câu lệnh trả về, bạn có thể sử dụng jsonify
thay vì json.dumps
theo đề xuất của RickLan trong phần bình luận.