当我尝试运行以下语句时:
cursor.executemany("""INSERT INTO `test` (`id`,`data`,`time_added`)
VALUES (%s, %s, NOW())""", [(i.id, i.data) for i in items])
MySQLdb 似乎在 NOW() 中阻塞了 ),当它扩展要插入的行列表时,因为它将括号视为值块的结尾。也就是说,查询看起来像:
('1', 'a', NOW(), ('2','b', NOW(), ('3','c',NOW())
MYSQL 报语法错误。相反,它们应该看起来像:
('1', 'a', NOW()), ('2','b', NOW()), ('3','c',NOW())
应该有某种方法可以逃避 NOW(),但我不知道如何。将 'NOW()' 添加到元组不起作用,因为 NOW() 被数据库引用并解释为字符串而不是函数调用。
通过使用当前时间戳作为默认值来解决这个问题不是一种选择——这是一个例子,我需要用各种数据库函数来做这种事情,而不仅仅是现在。
谢谢!