select语句

ao218c7q  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(458)

我是新手。我想问一下这个代码可能有什么问题:

'SELECT * FROM A3A_SIS.customer_info WHERE cust_name LIKE %' +self.le_ci_search.text()+ '%'

此行返回以下错误:
typeerror:需要一个类似字节的对象,而不是“tuple”。我正在尝试搜索一个列名,其中有一个单词lopez。
更新#1:
我建议使用以下代码:

def CustSearch(self):
        search_text = '%{}%'.format(self.le_ci_search.text())

        con = mdb.connect(user='root', passwd='password',
                        host='localhost', database='A3A_SIS')
        with con:
            cur = con.cursor()
            query = ('SELECT * FROM A3A_SIS.customer_info WHERE cust_name LIKE %s', (search_text))

            if cur.execute(query):
                QMessageBox.information(self, "Announcement.","Data was found!")
            else:    
                QMessageBox.information(self, "Announcement.","No data was found!")

        con.close()

我有个错误:
回溯(最近一次呼叫):
文件“/users/anthonygaupo/desktop/a3asis/a3a\u func.py”,第409行,在custsearch if cur.execute(query)中:
文件“/users/anthonygaupo/anaconda3/lib/python3.6/site packages/mysqldb/cursors.py”,第250行,在execute self.errorhandler(self,exc,value)中
文件“/users/anthonygaupo/anaconda3/lib/python3.6/site packages/mysqldb/connections.py”,第50行,在defaulterrorhandler中增加errorvalue
文件“/users/anthonygaupo/anaconda3/lib/python3.6/site packages/mysqldb/cursors.py”,第247行,在execute res=self.\u query(query)中
文件“/users/anthonygaupo/anaconda3/lib/python3.6/site packages/mysqldb/cursors.py”,第411行,在查询rowcount=self.\u do\u query(q)中
文件“/users/anthonygaupo/anaconda3/lib/python3.6/site packages/mysqldb/cursors.py”,第374行,在查询db.query(q)中
文件“/users/anthonygaupo/anaconda3/lib/python3.6/site packages/mysqldb/connections.py”,第277行,在query\u mysql.connection.query(self,query)中
typeerror:需要类似字节的对象,而不是“tuple”
我是mysql工作台

zmeyuzjn

zmeyuzjn1#

您需要将搜索文本(包括%字符)放在引号中。
但你不应该这样做。在sql语句外汇编值并使用参数替换:

query = '%{}%'.format(self.le_ci_search.text())
cursor.execute('SELECT * FROM A3A_SIS.customer_info WHERE cust_name LIKE %s', (query,))

编辑
您正在创建一个元组并将其作为查询传递给游标。我说要做的是创建一个字符串,并将其加上参数传递给游标:

cur = con.cursor()
query = 'SELECT * FROM A3A_SIS.customer_info WHERE cust_name LIKE %s'
if cur.execute(query, (search_text,)):
    ...

相关问题