Python MySQLdb:mysql_异常。编程错误:(1064)

Python MySQLdb:mysql_异常。编程错误:(1064),python,mysql,Python,Mysql,我正在尝试从MySQL检索数据。不幸的是,我得到的错误如下: _mysql_exceptions.ProgrammingError:(1064),“您的SQL语法有错误;请检查与您的mysql服务器对应的手册 在“1=,-5000,1”)附近使用正确语法的版本和 (如果(3=,5000,3)))在第1行) volumeMin和volumeMax是整数。实际上,它可以是浮动的。我如何修复错误 import MySQLdb import MySQLdb.cursors db = MySQLdb.c

我正在尝试从MySQL检索数据。不幸的是,我得到的错误如下:

_mysql_exceptions.ProgrammingError:(1064),“您的SQL语法有错误;请检查与您的mysql服务器对应的手册 在“1=,-5000,1”)附近使用正确语法的版本和 (如果(3=,5000,3)))在第1行)

volumeMin和volumeMax是整数。实际上,它可以是浮动的。我如何修复错误

import MySQLdb
import MySQLdb.cursors

db = MySQLdb.connect(host='xxx.mysql.pythonanywhere-services.com',user='xxx',passwd='xxx',db='xxx$default',cursorclass=MySQLdb.cursors.DictCursor)
curs = db.cursor()
name ='G%'
volumeMin = 1
volumeMax = 3
#request args was initially want to retrieve data from external app
#but eventually found that the problem is in MySQL request
"""name = request.args['name']
volumeMin = request.args['volumeMin']
volumeMax = request.args['volumeMax']
"""

query0 = "SELECT * FROM KLSE WHERE Stock LIKE %s AND "
query2 = "(Volume_changes_pc BETWEEN (IF %s='_',-5000,%s)) AND (IF(%s='_',5000,%s)))"

query = query0+query2
input = name,volumeMin,volumeMin,volumeMax,volumeMax
print query
print input
print (query,(input))
curs.execute(query,(input))
a = curs.fetchall()
打印输出(查询,(输入))

解决

query2 = "(Volume_changes_pc BETWEEN (IF (%s='_',-5000,%s)) AND (IF(%s='_',5000,%s)))"

遗漏一个括号

你能用行输出更新你的问题吗
打印(查询,(输入))
?@kiran.koduru,更新了打印所以这就是你的查询翻译成的
从KLSE中选择*,股票如G%和(成交量在(如果1=.-5000,1)和(如果(3=.-5000,3))和MACD如H之间变化)
。如果将其粘贴到
mysql
中,您将看到查询的语法有问题。@kiran.koduru,它显示相同的
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“%AND”(Volume_changes_pc介于(IF 1=”、-5000,1)和(IF(3=”、-5000,3))和“at line 1
之间使用的正确语法。IF
从KLSE中选择*,其中股票类似于“G%”,而(Volume_在(IF 1=”、-5000,1))和(IF(IF(3=”、-5000,3))和MACD类似于“H”)之间更改pc),错误为
错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行的“1=”、-5000,1)和(如果(3=”、-5000,3))以及类似MACD的“H”附近使用的正确语法。字符串的“G%”和“H”似乎是正确的,但对于整数和下划线,我真的搞不懂。你能用
print(query,(input))
?行的输出更新你的问题吗?@kiran.koduru,更新了打印,所以这就是你的查询从KLSE翻译成
SELECT*的内容,其中股票如G%和(体积变化)\u pc(IF 1=5000,1))和(IF(3=5000,3)))以及MACD-LIKE H
。如果将其粘贴到
mysql
中,您将看到查询的语法有问题。@kiran.koduru,它显示相同的
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“%AND”(Volume_changes_pc介于(IF 1=”、-5000,1)和(IF(3=”、-5000,3))和“at line 1
之间使用的正确语法。IF
从KLSE中选择*,其中股票类似于“G%”,而(Volume_在(IF 1=”、-5000,1))和(IF(IF(3=”、-5000,3))和MACD类似于“H”)之间更改pc),错误为
错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行的“1=”、-5000,1)和(如果(3=”、-5000,3))以及类似MACD的“H”附近使用的正确语法。似乎字符串的“G%”和“H”是正确的,但对于整数和下划线,我真的搞不懂。
query2 = "(Volume_changes_pc BETWEEN (IF (%s='_',-5000,%s)) AND (IF(%s='_',5000,%s)))"