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))
我在 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))