2014-09-02 68 views
0

我需要你的帮助,通过python更新我的mysqldb中的数据。一切正常,包括阅读,插入等 下面的查询不工作...mysqldb更新函数Python错误str

cursor.execute( “UPDATE einzelcheck SET Kursbuch =%s的WHERE analysenNummer =%S”(十进制(航向对接)中,i [8]))

我试图与几个optiosn为航向对接和我[8],总是我得到以下信息:

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

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

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

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

在此先感谢您的帮助!

Grüße!

+0

不适合我。十进制是用于转换的函数: – 2014-09-02 16:41:36

+0

您是否尝试过不使用“小数”运行相同的查询,并通过放置一些测试值(如“1.01”)? – Vor 2014-09-02 16:41:45

+0

从十进制* 然后可以使用十进制(xxx) – 2014-09-02 16:42:21

回答

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 – bernie 2014-09-02 16:46:16

+0

太棒了!有用!它越隐蔽,越有可能在某个地方出现错误......感谢大家的支持!我们绑: – 2014-09-02 17:24:49

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”然后在它后面的括号/括号,例如“abc”(...)看起来像是在试图调用一个字符串。因此,错误TypeError: 'str' object is not callable是有意义的。

+1

:P +1好回答:) – 2014-09-02 16:46:09

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)