【问题标题】:REST API Key and Value for PythonPython 的 REST API 键和值
【发布时间】:2018-05-25 20:44:10
【问题描述】:

我知道有多种方法可以在 Python 上公开您的数据以供 REST API 使用。但是,我使用的两种方法似乎在为结果值生成密钥方面存在问题。以下是我用来构建 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)

以下是缺少键名(列名)的请求结果示例。

如何在不输入数据库中找到的每一列标题的情况下获取键名?提前感谢您的回复。

【问题讨论】:

    标签: python mysql json rest api


    【解决方案1】:

    使用字典光标 (MySQLdb.cursors.DictCursor)

    【讨论】:

    • 好的。现在我明白了。谢谢。我只需要在查询行中添加 dict 。让我们设置第二种方法例如:res = [dict((conn.description[i][0], value) for i, value in enumerate(row)) for row in conn.fetchall()]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2013-06-27
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多