mysqldb UPDATE函数Python错误str

时间:2014-09-02 16:32:46

标签: python database mysql-python

我需要你帮助我通过python更新mysqldb中的数据。一切正常,包括阅读,插入等。 以下查询不起作用...

cursor.execute(“UPDATE einzelcheck SET Kursbuch =%s WHERE analysenNummer =%s”(十进制(kurs) ,1 [8]))

我尝试了几个optiosn for kurs和我[8],我总是得到以下信息:

cursor.execute(“UPDATE einzelanalyseanalysen SET Kurs bei empf =%s WHERE analysenNummer =%s”(十进制(kurs) ,I [12])) TypeError:'str'对象不可调用

str(i [8])也不起作用。

“kurs”是小数。在程序中我使用它与十进制(kurs)我可以毫无问题地计算。要在数据库“Kurs bei empf”中写入的值具有十进制格式(10,2)

i [12]是我之前获取的数据库条目的一部分。在数据库中格式为int(11)

提前感谢您的帮助!

Grüße!

3 个答案:

答案 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)