MYSQL不正确的双值Python 3
我在使更新查询正常工作时遇到问题。我正在使用Python3.7并使用tkinter构建gui。我有一个输入框,用户可以通过ID号选择项目,自动填充以下输入框,然后用户可以修改输入。我的错误发生在保存更改时。我有一个按钮,单击时调用函数save。见下文MYSQL不正确的双值Python 3,mysql,python-3.x,tkinter,Mysql,Python 3.x,Tkinter,我在使更新查询正常工作时遇到问题。我正在使用Python3.7并使用tkinter构建gui。我有一个输入框,用户可以通过ID号选择项目,自动填充以下输入框,然后用户可以修改输入。我的错误发生在保存更改时。我有一个按钮,单击时调用函数save。见下文 def save(): conn = mysql.connect( host="localhost", user="XXXX", passwd=&quo
def save():
conn = mysql.connect(
host="localhost",
user="XXXX",
passwd="XXXX",
database="inventory")
c = conn.cursor()
a0 = selectent.get()
a1 = item.get()
a2 = asset_tag.get()
a3 = amount.get()
a4 = notes.get()
c.execute(""" UPDATE items SET
item = 'a1',
asset_tag = 'a2',
amount = 'a3',
notes = 'a4'
WHERE id = 'a0' """)
conn.commit()
conn.close()
我在自学mySQL,从我所读到的关于这个错误的信息来看,这个错误似乎是在试图比较WHERE子句中的数字和字符串时发生的。这是有意义的,因为我的回溯将我带到代码中的那一行
Traceback (most recent call last):
File "C:\Users\mbrow\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\Users\mbrow\AppData\Local\Programs\Python\Python37\Inventory3\editmodule.py", line 61, in save
WHERE id = 'a0' """)
File "C:\Users\mbrow\AppData\Local\Programs\Python\Python37\lib\site-packages\mysql\connector\cursor_cext.py", line 266, in execute
raw_as_string=self._raw_as_string)
File "C:\Users\mbrow\AppData\Local\Programs\Python\Python37\lib\site-packages\mysql\connector\connection_cext.py", line 475, in cmd_query
sqlstate=exc.sqlstate)
mysql.connector.errors.DataError: 1292 (22007): Truncated incorrect DOUBLE value: 'a0'
有人能给我解释一下,让我更好地了解发生了什么事吗
我知道金额拼写错误。使用参数化查询和预处理语句
c.execute(""" UPDATE items SET
item = %s,
asset_tag = %s,
amount = %s,
notes = %s
WHERE id = %s """,(a1,a2,a3,a4,a0))
使用参数化查询和预处理语句
c.execute(""" UPDATE items SET
item = %s,
asset_tag = %s,
amount = %s,
notes = %s
WHERE id = %s """,(a1,a2,a3,a4,a0))
数据库表的结构是什么?您正在向数据库传递文本字符串。对参数化查询进行研究。你能解释一下为什么在你的问题中不使用prepared语句而不使用sti8rngs吗?为了提示你,Bryan,我肯定需要做更多的研究。你的数据库表的结构是什么?你是在向数据库传递文本字符串。对参数化查询进行研究。你能解释一下为什么在你的问题中不使用预先准备好的语句而不使用Sti8RNG吗?谢谢你的提示Bryan,我肯定需要做更多的研究。谢谢你,这工作做得很出色。正如Bryan上面提到的,我需要对参数化查询做更多的研究。谢谢你,这工作做得非常出色。正如Bryan上面提到的,我需要对参数化查询做更多的研究。