Python Mysql问题,表的%s
问题 为什么Python Mysql问题,表的%s,python,mysql,Python,Mysql,问题 为什么%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 (mo
%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")
回溯(最近一次呼叫最后一次):
文件“SNMP_Query.py”,第41行,在
cursor.execute(““”插入“%s”(日期、计数器输入、计数器输出、接口名称)值(当前时间戳、%s、%s)”,(设备、输入八位字节、输出八位字节、接口))
文件“/usr/lib/pymodules/python2.6/MySQLdb/cursors.py”,执行中的第166行
errorhandler(self、exc、value)
文件“/usr/lib/pymodules/python2.6/MySQLdb/connections.py”,第35行,在defaulterrorhandler中
提高errorclass,errorvalue
_mysql_exceptions.ProgrammingError:(1146,“表'Sipartech.'itx6-f10-1'不存在”)
我已经仔细检查了表
itx6-f10-1
,它确实存在。我在插入查询中注意到的一个错误是,您正在写入Date
一个没有(`)符号的列名,其中Date是关键字。因此,在您的查询中:-
cursor.execute("""INSERT INTO `%s` (Date, Counter_in,
^
应该是
cursor.execute("""INSERT INTO `%s` (`Date`, `Counter_in`,
^ added (`)
第二,我不明白为什么MySQL:1146出错?当数据库文件丢失时会发生这种情况。正如我所注意到的,
%s
正在工作,这就是如何从代码中的设备
Python变量中找到数据库名称的方法
但为什么你会得到:
'Sipartech.'itx6-f10-1''
^ ^ extra '
当然,这不能是数据库名称,也可能是mysql错误的原因: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_八位字节、Out_八位字节、interface
是而不是整数,则在查询字符串中的每个大括号{}
周围放置
我在insert查询中注意到的一个错误是,您编写的Date
列名没有(`)符号,其中Date是关键字。因此,在您的查询中:-
cursor.execute("""INSERT INTO `%s` (Date, Counter_in,
^
应该是
cursor.execute("""INSERT INTO `%s` (`Date`, `Counter_in`,
^ added (`)
第二,我不明白为什么MySQL:1146出错?当数据库文件丢失时会发生这种情况。正如我所注意到的,
%s
正在工作,这就是如何从代码中的设备
Python变量中找到数据库名称的方法
但为什么你会得到:
'Sipartech.'itx6-f10-1''
^ ^ extra '
当然,这不能是数据库名称,也可能是mysql错误的原因: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_八位字节、Out_八位字节、interface
是而不是整数,则在查询字符串中的每个大括号{}
周围放置