2013-04-25 82 views
0

我有我的Python代碼如下的結果:如何插入一個表包含多個字典到MySQL表中?

[ 

{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代碼中插入結果在MySQL表爲下面的代碼:

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

嘗試引用字段名稱。記錄的內容是什麼?

+0

記錄內容就是我上面粘貼的結果。每個文件都有其中之一。我正在瀏覽一個目錄。 – UserYmY 2013-04-25 07:30:56

0

請勿在字段名稱中使用空格。

如果您需要,請使用「角色」引用它們。

+0

只要我引用它們,我得到一個SQL語法錯誤 – UserYmY 2013-04-25 07:37:47

+0

在這裏發佈。 99%的時間,因爲你在你的字段名稱中使用空格,所以不要。 – tyteen4a03 2013-04-25 07:57:47

+0

我不能說我是從文件中提取我的字典的密鑰,並且那裏的密鑰是這樣的 – UserYmY 2013-04-25 08:28:25

1

您試圖將字符串插入字段INT(50)。

看看錶格的最後一個字段,註冊時間字段。它是一個Integer,你試圖插入'2012-10-08 17:28:47'或'2012-09-10 14:31:13'等值。

要快速修復,只需將註冊時間字段類型更改爲VARCHAR(50)。

但也許,對於性能問題,您應該考慮使用某種TIMESTAMP字段而不是VARCHAR來達到這種目的。


除了不要使用INT類型的字段,你想添加某種類型的字符串。

[{文件名修改記錄變量: '1,2',名稱: '峽谷',登記號: '6657',登記日期:「2012年9月10日14時31分13秒'},{ 文件名:' 5,43' ,名稱: '媽祖',註冊號:'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')]

並避免使用空格作爲列名以及

+0

它也不適用於VARCHAR – UserYmY 2013-04-25 10:19:56

相關問題