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

时间:2017-12-23 22:10:05

标签: python-3.x psycopg2

每次触发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

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

1 个答案:

答案 0 :(得分:6)

这里有一个微妙的问题。

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

所以只需改为:

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

你应该做得好!