【问题标题】:Python psycopg2 multiple columns in INSERT queryPython psycopg2 INSERT查询中的多列
【发布时间】:2016-06-17 13:53:25
【问题描述】:

我想通过 psycopg2 执行 INSERT 查询,对于这个问题,让我们将其简化为:

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

我这样做时效果很好:

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

现在,我的 Pandas 数据框有大约 90 多列,我想知道扩展上面的查询以便能够对多列执行它的最佳方法是什么。

我尝试将每个列和值作为单个字符串连接在一起并将其传递。我还尝试使用 90+ "\"%s\"" 创建一个字符串,我还尝试创建一个格式字符串,即。 """INSERT INTO {0} ({1}...{n}) VALUES ({n+1...n+n})""".format(...)。有一些不相关的问题会阻止这些工作,但是有没有更简单的方法来处理这种多列情况?

【问题讨论】:

    标签: python sql postgresql python-2.7 psycopg2


    【解决方案1】:

    我不熟悉 pandas,但您可能想要这样的东西:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 2018-10-24
      • 2011-12-29
      • 2018-02-11
      相关资源
      最近更新 更多