Python:Flask返回两条路由的内部服务器错误

Python:Flask返回两条路由的内部服务器错误,python,mysql,flask,Python,Mysql,Flask,我需要两个输入,可以访问相同的数据库,使用股票和股票代码。 但是,它返回内部服务器错误 我的代码如下: @app.route('/NYSE/<Stock>', methods=['GET']) @app.route('/NYSE/<Stockcode>', methods=['GET']) def NYSEstock(Stock,Stockcode): try: call = db.session.execute("SELECT * FROM NY

我需要两个输入,可以访问相同的数据库,使用股票和股票代码。 但是,它返回内部服务器错误

我的代码如下:

@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})
{
  "Stock": [
    {
      "index": 189,
      "Stock": "IBM",
      "Stockcode": "4350",
      "MACD": "No",
      "STOCH": "No",
      "RSI": "No",
}]
我希望route/NYSE/IBM和/NYSE/4350都能够访问数据/NYSE将包含许多股票,但使用/NYSE/或/NYSE/,我们将能够找到具体的股票

将其拆分为两个将能够解决问题,但我更希望只有一个def

@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})

问题是NYSTOCK函数,它必须接受一个参数。由于app.route decorator只添加了一条规则,路由器只有一个参数,您可以参考以下代码:

@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})