每次触发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
对于我出错的地方的任何帮助将不胜感激!
答案 0 :(得分:6)
这里有一个微妙的问题。
你需要一个逗号来制作元组而不仅仅是parens / bracket。
所以只需改为:
cur.execute("INSERT INTO test VALUES(%s);", (test_text,))
你应该做得好!