gpt4 book ai didi

表的 %s 的 Python Mysql 问题

转载 作者:行者123 更新时间:2023-11-29 00:33:09 25 4
gpt4 key购买 nike

问题

为什么 %s 转义序列在我的带有 MySQL 包的 Python 脚本中不起作用?

背景和代码

我对以下行有疑问:

cursor.execute("""INSERT INTO `%s` (Date, Counter_in, Counter_out, Interface_name) VALUES (CURRENT_TIMESTAMP, %s, %s, %s)""", (Equipment, In_Octets, Out_Octets, interface))

我收到以下错误消息:

Traceback (most recent call last):
File "SNMP_Query.py", line 41, in <module>
cursor.execute("""INSERT INTO `%s` (Date, Counter_in, Counter_out, Interface_name) VALUES (CURRENT_TIMESTAMP, %s, %s, %s)""", (Equipment, In_Octets, Out_Octets, interface))
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1146, "Table 'Sipartech.'itx6-f10-1'' doesn't exist")

我仔细检查了表itx6-f10-1,它确实存在。

最佳答案

我在您的插入查询中注意到的一个错误是您编写的 Date 列名称没有 (`) 符号,其中日期是 MySQL date type:关键词。因此,在您的查询中:-

cursor.execute("""INSERT INTO `%s` (Date, Counter_in, 
^

应该是

cursor.execute("""INSERT INTO `%s` (`Date`, `Counter_in`,                    
^ added (`)

其次,我无法理解为什么MySQL:1146 Error?当数据库文件丢失时会发生这种情况。
我注意到 %s 正在工作,这就是您如何从 Equipment 代码中的 Python 变量中找到数据库名称。

但是为什么你得到:

  'Sipartech.'itx6-f10-1''
^ ^ extra '

当然这不能是数据库名称,可能是 mysql error:1146 的原因,你应该得到:

 'Sipartech.itx6-f10-1'  

检查代码并查询。

此外,如果您对 %s 有疑问,则可以使用 string.formate() 函数代替 %s。喜欢:

      """  
INSERT INTO {0} ( `Date`,
`Counter_in`,
`Counter_out`,
`Interface_name`)
VALUES (CURRENT_TIMESTAMP, {1}, {2}, {3})
""".formate(Equipment, In_Octets, Out_Octets, interface))

此外,请记住,如果 In_Octets、Out_Octets、interface不是 整数,则将 ' 放在每个大括号 {} 在查询字符串中。

关于表的 %s 的 Python Mysql 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com