MySql更新查询在MySql中工作,但在Python中为1064
我正在尝试执行一个查询,该查询递增MySQL表的一列中的整数值。当我在MySQL中从命令行尝试时,我编写的查询工作正常,但是当我尝试用Python执行它时,我得到了一个语法错误。以下是Python代码:MySql更新查询在MySql中工作,但在Python中为1064,python,mysql,sql,syntax-error,mysql-error-1064,Python,Mysql,Sql,Syntax Error,Mysql Error 1064,我正在尝试执行一个查询,该查询递增MySQL表的一列中的整数值。当我在MySQL中从命令行尝试时,我编写的查询工作正常,但是当我尝试用Python执行它时,我得到了一个语法错误。以下是Python代码: refactorSequenceNumsQuery = """" UPDATE Contain SET sequencenum = sequencenum - 1 WHERE sequencenum > {} AND
refactorSequenceNumsQuery = """"
UPDATE Contain
SET sequencenum = sequencenum - 1
WHERE sequencenum > {}
AND albumid = {}
""".format(deletePhotoSequencenum, albumid)
execute_query_no_result(refactorSequenceNumsQuery)
这里是execute\u query\u no\u result()函数,它可以与我执行的其他更新查询一起工作
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,'您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在''\n UPDATE Contain\n SET sequencenum=sequencenum-1'附近使用的正确语法,其中sequencenum'位于第1行''
这相当令人困惑,因为正如我所说的,当我直接在数据库中运行查询时,查询工作正常。知道我为什么会出现语法错误吗?打印出字符串表明在
RefactorSequenceNumQuery
的开头有一个多余的“
:
>>> 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)
请在格式化后打印
refactorSequenceNumsQuery
的值并在此处共享它,好吗?我想字符串开头有一个额外的双引号。