mysqldb UPDATE函数Python错误str
Posted
技术标签:
【中文标题】mysqldb UPDATE函数Python错误str【英文标题】:mysqldb UPDATE function Python error str 【发布时间】:2014-10-27 00:02:06 【问题描述】:我需要您的帮助来通过 python 更新我的 mysqldb 中的数据。一切正常,包括读取、插入等。 以下查询不起作用...
cursor.execute("UPDATE einzel
.check
SET Kursbuch
= %s WHERE analysen
.Nummer
= %s" (Decimal(kurs),i[8]))
我尝试了几个用于 kurs 和 i[8] 的选项,总是收到以下消息:
cursor.execute("UPDATE einzelanalyse
.analysen
SET Kurs bei empf
= %s WHERE analysen
.Nummer
= %s" (Decimal(kurs),i[12]))
TypeError: 'str' 对象不可调用
str(i[8]) 也不起作用。
“kurs”是一个小数。在程序中,我将它与 Decimal(kurs) 一起使用,我可以毫无问题地计算。要写入数据库“Kurs bei empf”的值的格式为 decimal(10,2)
i[12] 是我之前获取的数据库条目的一部分。在数据库中格式为 int(11)
提前感谢您的帮助!
Grüße!
【问题讨论】:
我不清楚。小数是转换函数: 您是否尝试过不使用Decimal
并放置一些测试值(例如1.01
)来运行相同的查询?
from decimal import * 然后可以使用 Decimal (xxx) 将字符串转换为十进制
好点!现在我尝试了 cursor.execute("UPDATE einzelanalyse
.analysen
SET Kurs bei empf
= %s WHERE analysen
.Nummer
= %s" (1.01, 178317)) 它也不起作用。但现在我看到了问题,我认为是“Kurs bei empf”中的空格。会是这样吗?
【参考方案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 太棒了!有用!它越神秘,我就越有可能在某个地方出现错误......感谢大家的支持!【参考方案2】:错误是您在 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
是有道理的。
【讨论】:
【参考方案3】:#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)
【讨论】:
以上是关于mysqldb UPDATE函数Python错误str的主要内容,如果未能解决你的问题,请参考以下文章