时间戳-在字符串格式化过程中不是所有参数都转换psycopg2



我目前正在尝试编写一个查询,其中包括执行时的时间戳。

我的数据库是这样的:

  1. ID - 2。Text_data - 3。userid - 4 time_stamp(数据类型为"带时区的时间戳")

我的查询是这样的:

try:
postgres_insert_query = """INSERT INTO tweets (text, userid) VALUES (%s, %s,) (dt,)"""
insertion_data = (text, id, dt)
cursor.execute(postgres_insert_query, insertion_data)
connection.commit()
except (Exception, psycopg2.Error) as error:
print("failed", error)
finally:
if connection:
cursor.close()
connection.close()
print("closed")

然而,当我运行它时,我得到错误消息&;不是所有的参数在字符串格式化期间转换&;

我在这里错过了什么?

编辑:我得到了一个问题禁令,因为我的问题没有被点赞,但得到了回答,并且在评论中发生了一些很好的讨论。但是堆栈交换团队让我修改我的问题,使它们更清楚,但他们收到了答案,所以我认为它们是清楚的。我的母语不是英语,所以我的英语不是最好的,我不能很好地表达自己。但他们让我编辑它们,这样它们看起来就像新的一样,可以被点赞。我不明白为什么这有意义,但也许它解除了我的问题禁令。

字符串有3个参数,但只有两个字符串插值标记。

postgres_insert_query = """INSERT INTO tweets (text, userid) VALUES (%s, %s,) (dt,)"""

只有两个%s占位符,但是您尝试添加3个值。

insertion_data = (text, id, dt)

也许你想(不看你的表很难知道)。

postgres_insert_query = """INSERT INTO tweets (text, userid, dt) VALUES (%s, %s, %s)"""

最新更新