python - MySql UPDATE 查询在 mysql 中有效,但 1064 来自 Python

标签 python mysql sql syntax-error mysql-error-1064

我正在尝试执行一个查询,该查询会增加 MySQL 表的一列中的整数值。当我从 MySQL 的命令行中尝试时,我编写的查询工作正常,但当我尝试使用 Python 执行它时出现语法错误。这是 Python 代码:

refactorSequenceNumsQuery = """"
    UPDATE Contain
    SET sequencenum = sequencenum - 1
    WHERE sequencenum > {}
    AND albumid = {}
    """.format(deletePhotoSequencenum, albumid)
    execute_query_no_result(refactorSequenceNumsQuery)

这里是 execute_query_no_result() 函数,它可以与我执行的其他 UPDATE 查询一起正常工作。

def execute_query_no_result(queryString):
  connection = app.mysql.connect()
  cursor = connection.cursor()
  cursor.execute(queryString)
  connection.commit()
  cursor.close()
  connection.close()

最后,这是我在运行代码时遇到的 1064 错误:

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 '"\n UPDATE Contain\n SET sequencenum = sequencenum - 1\n WHERE sequencenum' at line 1')"

这非常令人费解,因为正如我所说,当我直接在数据库中运行查询时,查询工作正常。知道我为什么会收到语法错误吗?

最佳答案

打印出字符串显示你在 refactorSequenceNumsQuery 的开头有一个冗余的 ":

>>> deletePhotoSequencenum = 10
>>> albumid = 15
>>> refactorSequenceNumsQuery = """"
...     UPDATE Contain
...     SET sequencenum = sequencenum - 1
...     WHERE sequencenum > {}
...     AND albumid = {}
...     """.format(deletePhotoSequencenum, albumid)
>>> 
>>> print refactorSequenceNumsQuery
"
    UPDATE Contain
    SET sequencenum = sequencenum - 1
    WHERE sequencenum > 10
    AND albumid = 15

只需删除它,你应该没问题:

# Note: three "s, not four! 
refactorSequenceNumsQuery = """
    UPDATE Contain
    SET sequencenum = sequencenum - 1
    WHERE sequencenum > {}
    AND albumid = {}
    """.format(deletePhotoSequencenum, albumid)
    execute_query_no_result(refactorSequenceNumsQuery)

关于python - MySql UPDATE 查询在 mysql 中有效,但 1064 来自 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32727482/

相关文章:

python - 现有实例上的 SQLAlchemy 类继承

python - 使用正则表达式解析特殊符号 '( )'

mysql - 为什么 SQL NOT EXISTS 返回所有 NULL 值的 1 条记录

php - 如何用php判断INSERT IGNORE是否通过?

mysql - 将 ID 存储为逗号分隔值

python - 只能从 python 中的类后代访问的方法

mysql - 具有自定义值的sql唯一约束

php - 如何获取MySQL数据库中的总行数?

mysql - 仅将特定行从一个表复制到另一个表,并为每行信息创建一个新行

python - Executemany 不起作用(向 mysql 添加数据)