Psycopg2 - 不是在字符串格式化过程中转换的所有参数

问题描述 投票:3回答:1

每次触发database_insert函数时,我都试图将变量test_text的值插入到Postgres 9.6数据库中。

我正在使用Python 3.6和psycopg2 v 2.7

如果我在没有占位符的情况下使用下面的代码:例如将%s替换为'test'并删除,(test_text) - 它可以正常工作...

def database_insert(update):

    test_text = 'This is some test text'

    with psycopg2.connect("DB CONNECTION DETAILS ARE HERE'") as conn:

        cur = conn.cursor()

        cur.execute("INSERT INTO test VALUES(%s);", (test_text))

        conn.commit()

        cur.close()

    conn.close()

但是当函数尝试使用%s占位符插入test_text变量的值时,我得到以下错误...

cur.execute("INSERT INTO test VALUES(%s);", (test_text))
TypeError: not all arguments converted during string formatting

任何有关我出错的地方的帮助将不胜感激!

python-3.x psycopg2
1个回答
6
投票

这里有一个微妙的问题。

你需要一个逗号来制作元组而不仅仅是parens / bracket。

所以只需改为:

cur.execute("INSERT INTO test VALUES(%s);", (test_text,))

你应该好!

© www.soinside.com 2019 - 2024. All rights reserved.