0

我的 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

我在 MySQL 表中插入结果的 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()

有谁知道我为什么会收到此错误以及该错误是什么意思?

4

3 回答 3

1

您正在尝试将字符串插入字段 INT(50)。

看一下表格的最后一个字段,注册时间字段。它是一个整数,您正在尝试插入诸如“2012-10-08 17:28:47”或“2012-09-10 14:31:13”之类的值。

为了快速修复,只需将注册时间字段类型更改为 VARCHAR(50)。

但也许,对于性能问题,您应该考虑使用某种 TIMESTAMP 字段而不是 VARCHAR 来实现这种目的。


除了不要对要添加某种字符串的字段使用 INT 类型。

修改记录变量

[ {filename:'1,2',Name:'Gorge',注册号:'6657',注册日期:'2012-09-10 14:31:13'},{filename:'5,43',Name :'mazu',注册号:'45',注册日期:'2012-10-08 17:28:47'}]

to [('1,2','峡谷','6657', '2012-09-10 14:31:13'),('5,43','mazu','45','2012-10 -08 17:28:47')]

并避免在列名中使用空格

于 2013-04-25T09:54:20.067 回答
0

尝试引用字段名称。记录的内容是什么?

于 2013-04-25T07:16:15.597 回答
0

不要在字段名称中使用空格。

如果需要,请用 ` 字符引用它们。

于 2013-04-25T07:17:17.383 回答