2016-03-04 34 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