MySQL Python 日期和列表错误

MySQL Python Date and List Error

我在 Python 中执行某些 MySQL 语句时遇到 2 个问题。首先我有一个日期列,我已经手动插入了格式为 YYYY-MM-DD 的其他记录(例如 2016-03-15)。但是某处的格式存在问题,我尝试使用 strftime 等进行各种不同的格式组合。

我参考了 Inserting a Python datetime.datetime object into MySQL,但这没有用。

import time 
formattedTime = datetime.datetime(3000, 12, 03)
formattedTime = formattedTime.date().isoformat()
a = 1
b = 2
c = 4
cursor.execute("INSERT INTO nodeStatistics VALUES(%s, %d, %d, %d, NULL, NULL, NULL, NULL, NULL, NULL, 'item1 item2 item3')" %(formattedTime, a, b, c))
cnx.commit()

日期字段是我的主键。我收到错误提示 0000-00-00 的 NULL 条目(这是输入 NULL 时的默认值),所以我知道 "formattedTime" 和相应的“%s”失败: mysql.connector.errors.IntegrityError: 1062 (23000): 密钥 'PRIMARY'

的重复条目“0000-00-00”

其次,我有一个列表,listWords = list(),在我的数据库中我将​​相应的类型设置为longtext。我在程序执行期间将项目附加到,最后我 ' '.join(listWords) 将列表转换为 space 分隔的字符串,但是当我将上面的内容替换为 :

cursor.execute("INSERT INTO nodeStatistics VALUES(%s, %d, %d, %d, NULL, NULL, NULL, NULL, NULL, NULL, %s)" %(formattedTime, a, b, c, listWords))

我收到错误:

mysql.connector.errors.ProgrammingError: 1064 (42000): 你的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1

行 'item1 item2 item 3' 附近使用的正确语法

如有任何帮助,我们将不胜感激!

您不得对 SQL 查询使用字符串插值。而是使用参数替换,对于 MySQL 总是使用 %s 但处理方式不同;并用逗号与值分隔,而不是替换 %s.

cursor.execute("INSERT INTO nodeStatistics VALUES(%s, %s, %s, %s, NULL, NULL, NULL, NULL, NULL, NULL, 'item1 item2 item3')", (formattedTime, a, b, c))