python - 在烧瓶中创建一个查询 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)
解决方案
推荐阅读
- apache-spark - PySpark:org.apache.spark.sql.AnalysisException:找不到表或视图
- python - 在 csv 文件中加载带有标签的图像或使用它们的文件名
- mysql - where 子句获取匹配最多 2 个小数的记录
- azure-devops - KQL 中的字符串操作
- javascript - Google Apps 脚本 - 更新时将时间戳添加到多个单元格
- forms - 如何将 Mailerlite(或其他邮件服务)连接到 Google AMP 表单?
- java - 查找构成此字符串的代码的最小组合
- react-google-charts - 如何控制谷歌图表图例的字体系列、字体大小和颜色?
- javascript - 如何在VScode中调试Webdriverio黄瓜框架
- angular - 在嵌套元素中应用 searchPipe