首页 > 解决方案 > 在烧瓶中创建一个查询 Mysql 数据库并返回 json 的 web 服务

问题描述

请帮助:我正在尝试在烧瓶中创建一个 web 服务(这是我的第一次),它需要一个 str,查询一个外部 mysql 数据库并返回 1 行作为 json。

我确信下面的代码还有其他问题(非常感谢所有建议),但我什至看不到它们,因为当我尝试访问 example.com/webservice/vin/ 时,我得到“内部服务器错误

服务器遇到内部错误,无法完成您的请求。要么服务器超载,要么应用程序出错。”来自 nginx。

请有人可以指导我哪里出错了?

example.com 从在 docker 中运行的 app_name 返回 Hello ...yayy。它是不工作的另一条路线。


from flask.ext.mysqldb import MySQL
import json

app.config['MYSQL_HOST'] = 'xxx'
app.config['MYSQL_USER'] = 'xxx'
app.config['MYSQL_PASSWORD'] = 'xxx'
app.config['MYSQL_DB'] = 'xxx'
mysql = MySQL(app)


@app.route("/")
def index():

    # Use os.getenv("key") to get environment variables
    app_name = os.getenv("APP_NAME")

    if app_name:
        return f"Hello from {app_name} running in a Docker container behind Nginx!"

    return "Hello from Flask"




@app.route('/webservice/vin/<vin>', methods=['GET'])
def get_vehicle(vin):

   sql = "SELECT * FROM `table` where column = '(%s )';" %(vin)

    cur = mysql.connection.cursor()

    cur.execute(sql)

    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)


from flask import make_response

@app.errorhandler(404)
def not_found(error):
    return make_response(jsonify({'error': 'Not found'}), 404)

标签: pythonmysqljsondockerflask

解决方案


推荐阅读