PYMYSQL搜索中的SQL通配符
我正在努力为我的Flask应用程序创建一个简单的SQL通配符搜索 我正在使用一个HTML表单字段运行一个简单的mysql查询“WHERE CustomerName LIKE'a%”——但是我无法获得搜索占位符的正确位置 这里是HTML表单字段(工作正常) 最后是数据库助手函数PYMYSQL搜索中的SQL通配符,sql,flask,pymysql,Sql,Flask,Pymysql,我正在努力为我的Flask应用程序创建一个简单的SQL通配符搜索 我正在使用一个HTML表单字段运行一个简单的mysql查询“WHERE CustomerName LIKE'a%”——但是我无法获得搜索占位符的正确位置 这里是HTML表单字段(工作正常) 最后是数据库助手函数 def wego_wo(self,material_namex): connection = self.connect() MLN = "%s" % material_namex
def wego_wo(self,material_namex):
connection = self.connect()
MLN = "%s" % material_namex
try:
query = "SELECT id, material, cas, category FROM wegomats WHERE material LIKE '%s' ORDER BY cas" %(MLN);
with connection.cursor(pymysql.cursors.DictCursor) as cursor:
cursor.execute(query)
return cursor.fetchall()
finally:
connection.cursor
该错误似乎与类似“%s”的结构有关,因为使用“=”语句时查询工作正常
提前感谢您的帮助。经过多次尝试,我找到了这个问题的解决方案: “%”通配符运算符需要按如下方式放置:
MLN = "%s" % '%' + material_namex + '%'
代码的其余部分正确进行如下更改:
MLN = "%{0}%".format(material_namex)
并执行:
query = "SELECT id, material, cas, category FROM wegomats WHERE material LIKE '{0}' ORDER BY cas".format(MLN)
其余的保持不变。
希望这对您有用。只是为了澄清一下,通配符应该是a,以查找任何以“a”开头的值,因此可能有某种方法可以通过cas“%(MLN);在我的查询中修改-LIKE“%s”顺序,以允许以搜索开头。我尝试了%s%和/或修改(MLN)语句之类的操作。
MLN = "%{0}%".format(material_namex)
query = "SELECT id, material, cas, category FROM wegomats WHERE material LIKE '{0}' ORDER BY cas".format(MLN)