我无法使用python变量将时间戳插入mysql(v8.0.27(数据库。(注意,我使用pymysql作为光标(。
以下代码按预期工作:
testQuery = f"""
INSERT INTO test_table_2(time, id) VALUES ('2020-05-23 05:30:10', 4);
"""
cursor.execute(testQuery)
但以下代码不起作用:
time = '2020-05-23 05:30:10'
testQuery = f"""
INSERT INTO test_table_2(time, id) VALUES ({time}, 4);
"""
cursor.execute(testQuery)
并给出以下错误
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '05:30:10, 4)' at line 1")
(我知道使用f字符串对注入攻击不好,但我暂时不太关心这一点,因为我只是想让一些简单的东西发挥作用。然而,任何改进建议都是受欢迎的。我尝试过使用存储过程和其他方法的其他更复杂的方法,但这也不起作用。如果有人能帮助解决sto这个问题的红色过程版本:无法将带有存储过程的日期时间字段插入mysql数据库(
该表是使用以下模式创建的:
CREATE TABLE IF NOT EXISTS test_table_2 (
id INT,
time TIMESTAMP,
PRIMARY KEY (time)
);
您忘记在{time}
周围加引号,就像使用硬编码的时间戳一样。
但是不要使用字符串替换,而是使用一个带参数的已准备好的语句。
time = '2020-05-23 05:30:10'
testQuery = f"""
INSERT INTO test_table_2(time, id) VALUES (%s, 4);
"""
cursor.execute(testQuery, (time,))