使用 Psycopg 插入 PostgreSQL 函数

Insert PostgreSQL function using Psycopg

when arguments parameters to the execute method, in the case when using 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' 有效,因为这是这里的特例 Current Date/time