当参数作为execute方法的参数时,在使用python变量的情况下:
cur.execute("""
INSERT INTO some_table (an_int, a_date, a_string)
VALUES (%s, %s, %s);
""",
(10, datetime.datetime.now(datetime.timezone.utc), "O'Reilly"))
所有值必须是python?是否有一个选项来传递PostgreSQL函数,例如在UTC时间的情况下,传递NOW()
而不是datetime.datetime.now(datetime.timezone.utc)
,或者这只能以以下形式完成:
cur.execute("""
INSERT INTO some_table (an_int, a_date, a_string)
VALUES (123, NOW(), 'str');
""")
当所有的值都写在PostgreSQL
有两种方法:
cur.execute("""
INSERT INTO some_table (an_int, a_date, a_string)
VALUES (%s, NOW(), %s);
""", [123, 'str'])
cur.execute("""
INSERT INTO some_table (an_int, a_date, a_string)
VALUES (%s, %s, %s);
""", [123, 'now', 'str'])
'now'
工作,因为这是一个特殊的情况,从这里当前日期/时间