簡體   English   中英

python cursor.execute返回空

[英]python cursor.execute returning empty

我的python代碼有問題,我想用於REST API服務器。

當前的問題是當我知道值存在時,我的數據庫查詢返回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())

當我訪問此URL時,我返回以下內容:

沒有找到SQL Query:select * from active_predicted,其中ticketId = 1324

當我插入這個SQL查詢時,我得到了我想要的結果,1行有2列,但似乎程序無法找到該行?

問題:

  1. 正如@pvg所提到的,在查詢數據庫時需要轉義輸入值;
  2. 如果要獲取類似字典的結果,請在初始化游標時傳遞dictionary=True ;
  3. 在原始代碼中,您沒有返回變量json_output ;
  4. 要僅獲取一個結果,請使用fetchone而不是fetchall ;
  5. cursor.close()之后,無論你之前取得了什么,都無法從該游標中獲取任何內容;
  6. 使用try-finally確保游標始終關閉(最后)。

這是固定代碼:

@app.route('/data/active_predicted/<int:ticketId>', methods=['GET'])
def search_db_tickId_act(ticketId):
    try:
        cursor = db.cursor(dictionary=True)
        db_query = cursor.execute("select * from active_predicted where ticketId=%s LIMIT 1", ticketId)
        row = cursor.fetchone()
        if row:
            return json.dumps(row)
        else:
            return "Nothing found \n SQL Query: " + "select * from active_predicted where ticketId=" + str(ticketId)
    finally:
        cursor.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM