我的函数通过pymysql与存储在本地主机上的SQL数据库进行通信。我知道有类似的关于格式化SQL部分的文章,特别是this one,但是谁能给出解决方案呢?始终获取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:不是所有在字符串格式化期间转换的参数
提前感谢!
发布于 2018-06-11 15:00:31
问题在于,您将(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
。SET
子句使用查询参数,其原因与WHERE
子句的原因完全相同。SET
子句中。所以:
sqlquery='''UDPATE likesartmovement SET rating=? WHERE
artisticID=? AND userID=?'''
cursor.execute(sqlquery, (rating, pID, userID))
https://stackoverflow.com/questions/50807088
复制