[英]Python Formatting SQL WHERE clause
我有此功能,可以通過pymysql與存儲到本地主機的SQL數據庫進行通信。 我知道也有關於格式化SQL節的類似文章,尤其是這一節,但是有人可以提出解決方案嗎? 始終出現TypeError:無法將元組連接到字節。 我想這與WHERE子句有關。
def likeMovement(pID):
print("Give a rating for the movement with #id:%s" %pID)
rate=input("Give from 0-5: ")
userID=str(1)
print(rate,type(rate))
print(pID,type(pID))
print(userID,type(userID))
cursor=con.cursor()
sqlquery='''UDPATE likesartmovement SET likesartmovement.rating=%s WHERE
likesartmovement.artisticID=? AND likesartmovement.userID=?''' % (rate,),
(pID,userID)
cursor.execute(sqlquery)
TypeError:在字符串格式化期間並非所有參數都已轉換
提前致謝!
問題是您將(pID,userID)
存儲為sqlquery
存儲的元組的一部分,而不是將它們作為execute
參數傳遞:
sqlquery='''UDPATE likesartmovement SET likesartmovement.rating=%s WHERE
likesartmovement.artisticID=? AND likesartmovement.userID=?''' % (rate,)
cursor.execute(sqlquery, (pID,userID))
如果您舉一個簡單的例子,可能會更清楚地看到為什么它們不同:
s = 'abc'
spam(s, 2)
s = 'abc', 2
spam(s)
顯然,這兩個人做的不一樣。
在我們的時候:
UPDATE
。 WHERE
子句相同的原因,通常希望對SET
子句使用查詢參數。 SET
子句中包含表名。 所以:
sqlquery='''UDPATE likesartmovement SET rating=? WHERE
artisticID=? AND userID=?'''
cursor.execute(sqlquery, (rating, pID, userID))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.