2011-04-21 18 views
2

我想將存儲在字典中的值插入表中。這本字典包含1000000個值。Copy_from命令複製表中的字典值

我的字典的樣本是:

mydictationary: {"a":1; "b":2; "c":3; "d":4} 

我很期待使用copy_from命令(psycopg2)將這些值複製到表中。 喜歡的東西:

cur.copy_from (mydictationary, myTable) 

但是,它可以使用copy_from命令序到值從字典複製???我想使用copy_from命令,因爲這可能比使用sql insert語句更快。

+0

表在數據庫中的表? – vartec 2011-04-21 13:56:09

回答

2

正常的方式做到這一點:

cur.executemany('INSERT INTO myTable (key, value) VALUES (%s, %s)', mydictionary.items()) 

如果你堅持使用StringIO的

import StringIO 
dictFile = StringIO.StringIO() 
for item in dictionary.iteritems(): 
    dictFile.write("%s\t%s\n"%item) 
cur.copy_from(dictFile, 'myTable') 
+0

但是我們不能使用copy_from命令,正如我們在從stdin或從緩衝區複製數據時所做的那樣?就像:data = StringIO.StringIO(),然後,copy_from(data,mytable),而且我的語法錯誤是,psycopg2.ProgrammingError:語法錯誤在或接近「:」 – 2011-04-21 14:10:19

+0

這是因爲psycopg2不理解該風格的論據。 – vartec 2011-04-21 14:20:08