Psycopg2查询带有可变参数的语法异常

2024-04-24 08:12:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个Python函数来获取列表(长度可变)并将其插入到一个表中(列数与每个列表中的值相同):

ps.cur = psycopg_cursor

def load_lists(list_of_lists, table):
    # Get number of columns in table
    sql = """
          SELECT column_name FROM information_schema.columns
          WHERE table_schema = 'public'
          AND table_name = '{}'
          """.format(table)
    ps.cur.execute(sql)
    columns_list = [i[0] for i in ps.cur.fetchall()]
    # Insert list of lists into table
    columns = '(' + ','.join(columns_list) + ')'
    parameters = '(' + ','.join(['%%s' for i in columns_list]) + ')'
    for i in list_of_lists:
        sql = """
              INSERT INTO {} {}
              VALUES {}
              """.format(table, columns, parameters)
        values = tuple([j for j in i])
        ps.cur.execute(sql, values)

我得到以下回溯尝试执行函数:

^{pr2}$

Psycopg2似乎无法将我的变量绑定到%s参数,但我无法找出原因。任何帮助或想法都将不胜感激!在


Tags: columnsof函数nameinformat列表for
1条回答
网友
1楼 · 发布于 2024-04-24 08:12:49

结果是,在为我的查询构建参数标记时,每个's'前面只需要一个百分比。这有点令人困惑,因为Python中旧的字符串格式化方法也使用了%符号,但与Psycopg2不同。请参阅下面的工作代码(“parameters”变量中只有更改):

在ps.cur公司=心理光标

^{1}$

相关问题 更多 >