簡體   English   中英

Bottle和MySQLdb中Int,Decimal或Datetime類型的執行不起作用

[英]Execution of Int, Decimal or Datetime Types in Bottle and MySQLdb Not Working

在PythonAnywhere.com的Bottle中使用MySQLdb時遇到一個非常奇怪的錯誤

每當執行包含int,decimal或datetime類型的列時,執行都會引發500錯誤。 例如,從表Tools中,Manufacturer和sub_type都是varchars,因此此代碼塊可以完美地工作:

reservation_id = request.forms.get("reservation_id")
db = MySQLdb.connect("...")
c = db.cursor()
c.execute("""SELECT manufacturer, sub_type FROM Tool""")
row = c.fetchone()
return row

但是,請從該表中獲取int類型的同一表,或從該表中獲取int,十進制或日期時間類型的任何其他列:

reservation_id = request.forms.get("reservation_id")
db = MySQLdb.connect("...")
c = db.cursor()
c.execute("""SELECT tool_id FROM Tool""")
row = c.fetchone()
return row

並且Bottle引發嚴重錯誤:

運行WSGI應用程序SystemError時出錯:返回了帶有錯誤集的結果

在MySQL bash中,每個查詢都能完美運行。 將相同的查詢(僅int,十進制或datetime)放在execute()中,它將失敗。

有沒有類似的經歷?

您是否要返回row作為WSGI響應? 如果是這樣,那就是問題所在。 根據WSGI標准

當服務器調用該應用程序對象時,該應用程序對象必須返回一個可迭代的產生零個或多個字符串。

為了說明這一點,請嘗試先將您的行轉換為字符串,然后確認是否有幫助。 例如,

...  # your existing code
return [str(col) for col in row]

暫無
暫無

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

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