将行插入 MySQL 表时出现 pymysql.err.ProgrammingError 错误(使用 Python、Flask、ClearDB)

Posted

技术标签:

【中文标题】将行插入 MySQL 表时出现 pymysql.err.ProgrammingError 错误(使用 Python、Flask、ClearDB)【英文标题】:pymysql.err.ProgrammingError Error while Inserting Row into MySQL table (using 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() 【参考方案1】:

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

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

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

【讨论】:

谢谢。问题正如@Barmar 所说:MySQL 使用 curdate() 而不是 date()。您的解决方案是解决此问题的一种优雅方式。

以上是关于将行插入 MySQL 表时出现 pymysql.err.ProgrammingError 错误(使用 Python、Flask、ClearDB)的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中插入 MySQL 表时出现语法错误 [重复]

尝试将行插入表因为带有sequelize.js的UUID外键时出错

如何编写 MySQL 触发器以将行插入另一个表?

有外键约束的子表插入数据时出现的错误

使用 PHP 将数据插入 MySQL 数据库时出现问题

将行从一个链接表插入到另一个链接表