Я знаю, что есть несколько способов раскрыть ваши данные для использования REST API на 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)

Второй способ

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)

И ниже приведен пример результатов запроса, в котором отсутствуют ключевые имена (имя столбца).

How do I get the key names without typing every single column titles found in the database?

Как получить имена ключей, не вводя заголовки всех столбцов в базе данных? Заранее благодарим за ответы.

1
Sofia E. 12 Дек 2017 в 11:14

1 ответ

Лучший ответ

Используйте DictCursor (MySQLdb.cursors.DictCursor)

1
bruno desthuilliers 12 Дек 2017 в 08:23