[英]Python: Flask return internal server error with two routes
我需要两个可以使用Stock和Stockcode访问相同数据库的输入。 但是,它返回内部服务器错误
我的代码如下:
@app.route('/NYSE/<Stock>', methods=['GET'])
@app.route('/NYSE/<Stockcode>', methods=['GET'])
def NYSEstock(Stock,Stockcode):
try:
call = db.session.execute("SELECT * FROM NYSE WHERE (Stockcode LIKE :param or Stock LIKE :param1)",{"param":Stockcode,"param1":Stock})
c = call.fetchall()
c1 = [OrderedDict(zip(col,t)) for t in c]
except Exception:
return 'Error: unable to fetch items'
#return "hihi"
return jsonify({'Stock': c1})
我在MySQL中的数据如下:
{
"Stock": [
{
"index": 189,
"Stock": "IBM",
"Stockcode": "4350",
"MACD": "No",
"STOCH": "No",
"RSI": "No",
}]
我希望路由/NYSE/IBM
和/NYSE/4350
都能够访问数据。 / NYSE将包含许多股票,但是使用/NYSE/<Stock>
或/NYSE/<Stockcode
>,我们将能够找到特定的股票。
将它分成两个就能解决问题,但是我更喜欢只有一个定义
@app.route('/NYSE/<Stock>', methods=['GET'])
def NYSEstock(Stock):
try:
call = db.session.execute("SELECT * FROM NYSE WHERE (Stock LIKE :param )",{"param":Stock})
c = call.fetchall()
c1 = [OrderedDict(zip(col,t)) for t in c]
except Exception:
return 'Error: unable to fetch items'
#return "hihi"
return jsonify({'Stock': c1})
@app.route('/NYSEstockcode/<Stockcode>', methods=['GET'])
def NYSEstockcode(Stock):
try:
call = db.session.execute("SELECT * FROM NYSE WHERE (Stockcode LIKE :param )",{"param":Stockcode})
c = call.fetchall()
c1 = [OrderedDict(zip(col,t)) for t in c]
except Exception:
return 'Error: unable to fetch items'
#return "hihi"
return jsonify({'Stock': c1})
问题是NYSEstock函数,必须接受一个参数。 因为app.route装饰器仅添加一个规则,所以路由器只有一个参数,您可以参考以下代码:
@app.route('/NYSE/<stock_or_id>', methods=['GET'])
@app.route('/NYSE/<stock_or_id>', methods=['GET'])
def NYSEstock(stock_or_id):
try:
call = db.session.execute("SELECT * FROM NYSE WHERE (Stockcode LIKE :param or Stock LIKE :param1)",{"param":stock_or_id,"param1":stock_or_id})
c = call.fetchall()
c1 = [OrderedDict(zip(col,t)) for t in c]
except Exception:
return 'Error: unable to fetch items'
#return "hihi"
return jsonify({'Stock': c1})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.