将行插入 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)的主要内容,如果未能解决你的问题,请参考以下文章