簡體   English   中英

ValueError:不支持的格式字符'T'(0x54)

[英]ValueError: unsupported format character 'T' (0x54)

我正在嘗試通過Python這樣的MySQL查詢傳遞字符串-

cur.execute("""SELECT * FROM abcDB.zyzTable WHERE ordId IN %s """ %(orderString1))

和orderString1看起來像(534,523,544)該字符串帶有方括號

我收到以下錯誤。

ValueError:索引2195處不支持的格式字符'T'(0x54)

我該如何解決?

我建議使用另一種方法來參數化您的IN查詢。 而不是使用要檢查的所有值制作類似"(534,523,544)"的字符串,而是將每個值作為參數傳遞。

例如:

order_ids = [534, 523, 544]
query = "SELECT * FROM abcDB.zyzTable WHERE ordId IN ("
query += ",".join(["%s"]*len(order_ids)) + ")"
cur.execute(query, order_ids)

哪個可以有效地執行以下查詢:

"SELECT * FROM abcDB.zyzTable WHERE ordId IN (534,523,544)"

這里的關鍵是我使用了",".join(["%s"]*len(order_ids))為查詢動態創建適當數量的占位符。

還要注意cur.execute()的第二個參數是訂單ID的列表。 我沒有像您那樣格式化字符串。

不要使用% ,否則您容易受到sql-injection的影響。 這樣更安全,更可靠。 有關此帖子的更多閱讀內容:

Python最佳實踐和最安全的方法是連接到MySQL並執行查詢

暫無
暫無

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

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