2016-03-04 33 views
1

我想執行通過psycopg2一個INSERT查詢,對於這個問題,讓我們把它簡化到只是:Python的psycopg2在INSERT查詢多個列

query = """ INSERT INTO %s("%s") VALUES(%s); """ 

當我做這一切正常:

params = [AsIs(table_name), AsIs(column_name), value]  
cursor.execute(query, params) 

現在,我的Pandas數據框有大約90多列,我想知道什麼是擴展上述查詢以便能夠爲多列執行的最佳方式。

我曾嘗試將每個列和值作爲單個字符串加入,並將其傳入。我也嘗試創建一個包含90+的字符串,並且我還嘗試創建格式字符串ie。 """INSERT INTO {0} ({1}...{n}) VALUES ({n+1...n+n})""".format(...)。有無關的問題阻止這些工作,但有沒有更簡單的方法來處理這個多欄的情況?

回答

1

我不熟悉的大熊貓,但你可能想是這樣的:

columns = ', '.join(column_names) # Where column names is a tuple or list of all the column headings you want in your query. 
query = """ INSERT INTO %s("%s") VALUES(%%s); """ % (table_name, columns) 
params = [value] 
cursor.execute(query, params) 

的一點是,你需要單獨插入列標題和值。看到這個帖子比我可以提供更好的解釋:

Psycopg2 Insert Into Table with Placeholders