PYMYSQL搜索中的SQL通配符

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

我正在努力为我的Flask应用程序创建一个简单的SQL通配符搜索

我正在使用一个HTML表单字段运行一个简单的mysql查询“WHERE CustomerName LIKE'a%”——但是我无法获得搜索占位符的正确位置

这里是HTML表单字段(工作正常)

最后是数据库助手函数

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)