دالة بحث بايثون لا تعمل في البرنامج

قمت بكتابة دالة للبحث في البرنامج : 

def search(self):
        con = pymysql.connect(host='localhost', user = 'root', password = '', database = 'employ')
        cur = con.cursor()
        cur.execute("select * from employees where " +
        str(self.se_by.get())+" LIKE '%"+ str(self.se_var.get())+"%'")
        rows = cur.fetchall()
        if len (rows) !=0:
            self.student_table.delete(*self.student_table.get_children())
            for row in rows:
                self.student_table.insert("", END, value=row)
            con.commit()
        con.close()

ولا تعمل! حيث تعطي الخطأ التالي : 

pymysql.err.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 'LIKE '%%'' at line 1")

الرجاء المساعدة


التعليق السابق
Elalfi_Web أضف ردا

يجب أن تتأكد من شكل جملة SQL النهائي من خلال كود الطباعة التالي:

query = """SELECT * FROM employees WHERE %s LIKE "%%%s%%" """
args = (str(self.se_by.get()), str(self.se_var.get()))
print(query % args)  # طباعة جملة SQL 
cur.execute(query, args)

ولكي تتأكد من أن المشكلة ليست في المعاملات args أيضًا.

حاول كذلك تنفيذ جملة SQL الناتجة من العملية السابقة في قاعدة بيانات MySQL مباشرة للتأكد من أنها جملة SQL صحيحة.

يعني الجملة الناتجة عن الطباعة نضعها بدل LIKE

لا، ما أقصده هو أن تستخدم الجملة الناتجة من الطباعة وتقوم بتنفيذها في خادم MySQL مباشرة لإختبارها والتأكد من أنها صحيحة.