2017-03-09 32 views
0

我需要兩個輸入,可以使用Stock和Stockcode訪問同一個數據庫。 但是,它返回內部服務器錯誤Python:燒瓶返回兩條路線的內部服務器錯誤

我的代碼如下:

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

回答

0

的問題是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}) 
相關問題