【问题标题】:pymysql.err.ProgrammingError Error while Inserting Row into MySQL table (using Python, Flask, ClearDB)将行插入 MySQL 表时出现 pymysql.err.ProgrammingError 错误(使用 Python、Flask、ClearDB)
【发布时间】:2021-02-22 21:44:21
【问题描述】:

我看过很多关于此的帖子,但我无法解决此问题。 我正在将我的数据库从 SQLite 转换为 MySQL,并且在将值插入表时遇到问题。在此语句中,关键字和 sortType 是传递到方法中且未修改的变量。 keyword、type_search 和 sort 属于 TEXT 类型,而 date_add 属于 DATE。

conn = mysql.connect() 
cursor = conn.cursor() 
cursor.execute('INSERT INTO search (keyword, date_add, type_search, sort) VALUES (%s, date(), %s, %s)', (keyword, 'value', sortType))
conn.commit()

错误:

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 '), 'value', 'views_week')' at line 1")

我将 date 更改为 date_add 因为它是一个关键字,但这并没有解决问题。我该如何解决这个问题?

谢谢!

【问题讨论】:

  • MySQL 没有date() 函数。使用curdate()

标签: python mysql sql


【解决方案1】:

您还可以使用当前时间戳的默认列创建表:

create table search (
keyword...,
date_add TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
...)

然后您可以在不提及 date_add 列的情况下执行执行,它将是当前时间戳。

【讨论】:

  • 谢谢。问题正如@Barmar 所说:MySQL 使用 curdate() 而不是 date()。您的解决方案是解决此问题的一种优雅方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
  • 2015-10-09
  • 2020-10-12
  • 1970-01-01
  • 2013-07-15
相关资源
最近更新 更多