尝试在Sqlite3中将变量搜索到两个不同的列中

2024-09-30 04:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

Sqlite3 pyqt5和python3

inpsearch = ('%'+self.lineEdit.text()+'%',)
conn = sqlite3.connect('formuladatabase')
c = conn.cursor()
c.execute('DROP TABLE IF EXISTS search')
c.execute('CREATE TABLE search(rowid, Name TEXT, Surname TEXT, datestamp TEXT, Stylist TEXT, formula TEXT, Price REAL)')

那是原作下面的作品

#c.execute('INSERT INTO search SELECT * FROM clientsformula WHERE Name LIKE ?', inpsearch)

一列的工作很好,但我期待通过2列搜索

c.execute('INSERT INTO search SELECT * FROM clientsformula WHERE Name=? OR Surname=?', inpsearch, inpsearch)

此return:Type error函数最多接受给定的2个参数(3)

conn.commit()
c.close()
conn.close()

好几天都在想办法解决这个问题。。。还有一个附带的问题,有人知道如何用Pyqt5为QlineEdit创建自动完成(.setCompleter)吗

谢谢


Tags: textnamefromexecutesearchtablesurnameconn
1条回答
网友
1楼 · 发布于 2024-09-30 04:31:56

cursor.execute()需要2个参数,sql语句和一个参数元组(在您的例子中是2个bindvalues)。您提供了sql语句和2个元组以及1个参数。你知道吗

这应该起作用:

bv = '%'+self.lineEdit.text()+'%'
inpsearch = (bv, bv, )
c.execute('INSERT INTO search SELECT * FROM clientsformula WHERE Name=? OR Surname=?', inpsearch)

或者:

inpsearch = ('%'+self.lineEdit.text()+'%',)
c.execute('INSERT INTO search SELECT * FROM clientsformula WHERE Name= {0} OR Surname= {0}', inpsearch)

相关问题 更多 >

    热门问题