如何从python使用mysql的CURRENT_TIMESTAMP?

问题描述 投票:0回答:1

我想使用Python代码中的MySQL函数CURRENT_TIMESTAMP,但不知道如何在我的INSERT或UPDATE查询中传递它。

    try:
    mycursor.execute(
        "CREATE TABLE IF NOT EXISTS test (pkID bigint unsigned NOT NULL AUTO_INCREMENT , tsTest TIMESTAMP, PRIMARY KEY (pkID));")
    sqlInsert = "INSERT INTO test (tsTest) VALUES (%s);"
    valsInsert = ['CURRENT_TIMESTAMP', ]
    mycursor.execute(sqlInsert, valsInsert)
except mysql.connector.Error as err:
    print("MySQL error: {}".format(err))

我尝试过:“CURRENT_TIMESTAMP”、“CURRENT_TIMESTAMP()”甚至 mysql.connector.Timestamp MySQL 只是抛出:不正确的日期时间值:

是的,我知道我可以使用 python 的 Now() 函数,但是如果代码在与数据库不同的服务器上运行,这可能会出现问题。因此,我更愿意对所有时间戳使用 mySQL 函数。 蒂亚!

python mysql timestamp sql-timestamp
1个回答
0
投票

查询参数始终被视为标量值,而不是表达式或关键字。因此它的执行就像您运行了此查询一样:

INSERT INTO test (tsTest) VALUES ('CURRENT_TIMESTAMP')

这就像字符串文字,而不是 CURRENT_TIMESTAMP 函数。 MySQL 可能会尝试将字符串值转换为任何列的数据类型,但这在时间戳或日期时间的情况下不起作用。

如果要插入表达式,只需输入查询的表达式即可,不要使用参数。

sqlInsert = "INSERT INTO test (tsTest) VALUES (CURRENT_TIMESTAMP);"
© www.soinside.com 2019 - 2024. All rights reserved.