我有我的Python代碼,我想用於REST API服務器的問題。蟒蛇cursor.execute返回空
目前的問題是,我的數據庫查詢返回null,當我知道這個值是有
的特定路徑代碼:
@app.route('/data/active_predicted/<int:ticketId>', methods=['GET'])
def search_db_tickId_act(ticketId):
cursor = db.cursor()
db_query = cursor.execute("select * from active_predicted where ticketId=" + str(ticketId))
json_output = json.dumps(dict(cursor.fetchall()))
cursor.close()
if not cursor.fetchall():
return "Nothing found \n SQL Query: " + "select * from active_predicted where ticketId=" + str(ticketId)
else:
return str(cursor.fetchall())
當我訪問這個網址我得到的返回以下:
未找到SQL查詢:SELECT * FROM active_predicted其中ticketId = 1324
當我插上這個SQL查詢時I g等我想要的結果,1行與2列,但它似乎程序無法找到行?
我猜你消耗在該行'json_output = json.dumps(字典(cursor.fetchall()))'所有的結果,但我不是Python DB專家。我也建議你可能不希望使用字符串操作來構造查詢(DB接口有自己更安全的方式來指定參數)。 – Blckknght
首先,不要通過字符串連接構造查詢,你的程序很容易受到sql注入的影響。遊標也因某個原因而被命名 - 它通過結果集前進,因此您無法反覆調用'fetchall' - 第一個fetchall會提取所有結果。 – pvg
@pvg謝謝你的提示,我習慣了java編程,所以我對函數不太確定。另外,感謝您關於SQL注入的提示。問題是,即使沒有底部的if else語句,返回的JSON對象中也沒有任何數據。 – Jimmy