【发布时间】:2019-06-11 03:36:29
【问题描述】:
我有一个搜索请求写成
导入 sqlite3
conn = sqlite3.connect('locker_data.db')
c = conn.cursor()
def search1(teacher):
test = 'SELECT Name FROM locker_data WHERE Name or Email LIKE "%{0}%"'.format(teacher)
data1 = c.execute(test)
return data1
def display1(data1):
Display1 = []
for Name in data1:
temp1 = str(Name[0])
Display1.append("Name: {0}".format(temp1))
return Display1
def locker_searcher(teacher):
data = display1(search1(teacher))
return data
这使我可以使用搜索输入“FishyPower”来搜索包含“Mr FishyPower (Mr Swag)”或“Mr FishyPower / Mr Swag”的行。但是,当我尝试输入“Swag”进行搜索时,我无法找到同一行。
在下面的搜索中,它应该给了我相同的搜索结果。
该数据库只是一个简单的 1x1 sqlite3 数据库,其中包含“FishyPower / Mr Swag”
编辑:从技术上讲,我确实通过将要搜索的列限制为仅“名称”来解决它,但我希望代码同时搜索“名称”和“电子邮件”列并输出结果,只要在其中一个或两列。
Edit2: SELECT Name FROM locker_data WHERE Email LIKE "%{0}%" 或 Name LIKE "%{0}%" 是正确的方法。
【问题讨论】:
-
以目前的形式,这个问题是无法回答的。没有迹象表明您正在使用什么 sqlite3 接口,并且 sql(如所写)不会返回所描述的任何一行。记住,MCVE。
-
明白了,我已经用更多细节更新了这个问题。最后包含搜索不工作的图片。
-
我不认为“姓名或电子邮件之类的地方”是一个有效的条款。它可能应该是“名称之类的东西或电子邮件之类的东西”。
-
@Aioros Thx 伙计,这确实有效:v 我怎么没尝试过:v
标签: sqlite