我需要你帮助我通过python更新mysqldb中的数据。一切正常,包括阅读,插入等。 以下查询不起作用...
cursor.execute(“UPDATE einzel
。check
SET Kursbuch
=%s WHERE analysen
。Nummer
=%s”(十进制(kurs) ,1 [8]))
我尝试了几个optiosn for kurs和我[8],我总是得到以下信息:
cursor.execute(“UPDATE einzelanalyse
。analysen
SET Kurs bei empf
=%s WHERE analysen
。Nummer
=%s”(十进制(kurs) ,I [12]))
TypeError:'str'对象不可调用
str(i [8])也不起作用。
“kurs”是小数。在程序中我使用它与十进制(kurs)我可以毫无问题地计算。要在数据库“Kurs bei empf”中写入的值具有十进制格式(10,2)
i [12]是我之前获取的数据库条目的一部分。在数据库中格式为int(11)
提前感谢您的帮助!
Grüße!
答案 0 :(得分:1)
试试这个
cursor.execute("UPDATE einzelanalyse.analysen SET Kurs bei empf = %s WHERE analysen.Nummer = %s"% (Decimal(kurs),i[12]))
你错过了字符串格式化所需的额外%
但是建议使用mysql格式
cursor.execute("UPDATE einzelanalyse.analysen SET Kurs bei empf = %s WHERE analysen.Nummer = %s", (Decimal(kurs),i[12]))
答案 1 :(得分:1)
错误是您在UPDATE语句和元组之间缺少逗号。请将代码更改为:
cursor.execute("""UPDATE einzelanalyse.analysen
SET Kurs bei empf = %s
WHERE analysen.Nummer = %s""", (Decimal(kurs),i[12]))
# ^ this is where the comma is necessary
之前发生的事情是你有一个字符串,例如“abc”然后在它之后的parens / bracket,例如“abc”(...),看起来你正试图调用一个字符串。因此,错误TypeError: 'str' object is not callable
是有道理的。
答案 2 :(得分:0)
#Create strings for values
empf = Decimal(kurs)
analysen = i[12]
#python notation for placeholders should be noted as {0} {1} etc. instead of %s
#use .format(string,string) to point back to {0} and {1}
# Create a query string
query = "update einzelanalyse.analysen set kurs bei empf = {0} where analysen.nummer {1}".format(empf,analysen)
# Let the cursor just run the prebuild query string
cursor.execute(query)