我正在尝试执行一个查询,该查询会增加 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/