我想使用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 函数。 蒂亚!
查询参数始终被视为标量值,而不是表达式或关键字。因此它的执行就像您运行了此查询一样:
INSERT INTO test (tsTest) VALUES ('CURRENT_TIMESTAMP')
这就像字符串文字,而不是 CURRENT_TIMESTAMP 函数。 MySQL 可能会尝试将字符串值转换为任何列的数据类型,但这在时间戳或日期时间的情况下不起作用。
如果要插入表达式,只需输入查询的表达式即可,不要使用参数。
sqlInsert = "INSERT INTO test (tsTest) VALUES (CURRENT_TIMESTAMP);"