1
PythonでREST APIを使用する目的でデータを公開するには、いくつかの方法があることを認識しています。しかし、私が使用した2つのメソッドは、結果の値のキーを生成することに問題があるようでした。PythonのREST APIのキーと値
まずメソッド
from flask import Flask, jsonify
from flaskext.mysql import MySQL
mysql = MySQL()
app = Flask(__name__)
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_USER'] = 'user'
app.config['MYSQL_DATABASE_PASSWORD'] = 'fakepassword'
app.config['MYSQL_DATABASE_DB'] = 'router'
mysql.init_app(app)
@app.route('/api/v1/routerstatus', methods=['GET'])
def get():
cursor = mysql.connect().cursor()
cursor.execute('SELECT * FROM dm_routerstatus ORDER BY
status_update_time DESC LIMIT 100;')
rv = cursor.fetchall()
return jsonify(rv)
if __name__ == '__main__':
app.run(host='0.0.0.0')
app.run(debug=True)
第2の方法
from flask import Flask, jsonify, request
from flask_restful import Resource, Api
from json import dumps
from flaskext.mysql import MySQL
*SKIPPED THE DB CREDENTIALS*
mysql = MySQL()
app = Flask(__name__)
api = Api(app)
mysql.init_app(app)
class Router(Resource):
def get(self):
conn = mysql.connect().cursor()
query = cursor.execute('SELECT * FROM dm_routerstatus ORDER BY
status_update_time DESC LIMIT 100;')
result = {'data': [i[0] for i in query.cursor.fetchall()]}
return jsonify(result)
api.add_resource(Router, '/api/v1/routerstatus')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
app.run(debug=True)
以下のリクエスト結果の一例である:ここで私は私のREST APIを構築するために使用される二つの方法がありますキー名(列名)がありません。私は、データベース内で見つかったすべての単一の列のタイトルを入力せずにキー名を取得するにはどうすればよい
?回答には事前に感謝します。
Alrightを使用してください。今分かります。ありがとう。クエリ行にdictを追加するだけです。 2番目のメソッドを設定しましょう: conn.fetchall()]の行の 'res = [dict((iの場合はi.description [i] [0]、value)、enumerate(rowの場合) –