如何在MySQL表中插入由几个字典组成的表?

时间:2013-04-25 07:07:19

标签: python mysql

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

有没有人知道我为什么会收到此错误,错误是什么意思?

3 个答案:

答案 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)

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

如果您需要,请用'字符。

引用它们