python Psycopg 2-在字符串格式化期间,并非所有参数都被转换

unftdfkk  于 2023-04-04  发布在  Python
关注(0)|答案(1)|浏览(125)

我尝试在每次触发database_insert函数时将变量test_text的值插入到Postgres 9.6数据库中。
我使用的是Python 3.6和psycopg 2 v 2.7
如果我使用下面的代码而不使用占位符:例如用'test'替换%s并删除,(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

任何帮助,我在哪里去错了,这将是非常感谢!

nhjlsmyf

nhjlsmyf1#

这里有一个微妙的问题。
你需要一个逗号来组成一个元组,而不仅仅是括号。
因此,只需更改为:

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

你应该好好的!

相关问题