我的python代码得到以下结果:
[
{filename:'1,2',Name:'Gorge',registration number: '6657', registration date: '2012-09-10 14:31:13'},
{filename:'5,43',Name:'mazu',registration number:'45', registration date:'2012-10-08 17:28:47'}]
一旦我想把它放在MySQL表中,我就收到了这个错误:
Traceback (most recent call last):
File "C:\Users\jio\Datasets 1\MyTable_info.py", line 63, in <module>
cur.executemany(query,records)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 243, in executemany
self.errorhandler(self, ProgrammingError, msg.args[0])
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: not enough arguments for format string
我在Python表中插入结果的python代码如下代码:
con = MySQLdb.connect(host = "******", port=***, user = "***", passwd="*****", db="****")
with con:
cur=con.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS info(id INT(10) auto_increment primary key,file_name VARCHAR(10),
Name VARCHAR(50),Registration ID INT(50),registration time INT(50))''')
query= "INSERT INTO info (file_name, Name, Registration ID, registration time) VALUES ( %s, %s, %s, %s )"
cur.executemany(query,records)
con.commit()
有没有人知道我为什么会收到此错误,错误是什么意思?
答案 0 :(得分:1)
您正在尝试将字符串插入字段INT(50)。
查看表格的最后一个字段,注册时间字段。这是一个整数,你试图插入像'2012-10-08 17:28:47'或'2012-09-10 14:31:13'这样的值。
要快速修复,只需将注册时间字段类型更改为VARCHAR(50)。
但是,对于性能问题,你应该考虑使用某种TIMESTAMP字段而不是VARCHAR来实现这种目的。
除了不要在要添加某种字符串的字段中使用INT类型。
修改
中的记录变量[{filename:'1,2',姓名:'Gorge',注册号:'6657',注册日期:'2012-09-10 14:31:13'}, {filename:'5,43',姓名:'mazu',注册号:'45',注册日期:'2012-10-08 17:28:47'}
要 [('1,2','Gorge','6657','2012-09-10 14:31:13'),(''5,43','mazu','45','2012-10- 08 17:28:47')]
并且避免使用空格作为列名称
答案 1 :(得分:0)
尝试引用字段名称。记录的内容是什么?
答案 2 :(得分:0)
不要在字段名称中使用空格。
如果您需要,请用'字符。
引用它们