MySQL:进行基本搜索

时间:2010-07-18 19:26:05

标签: python mysql

我的数据库中有一个名称表,我希望对其进行模糊搜索,例如我的数据库包含:

Name         ID
John Smith   1
Edward Smith 2
Gabriel Gray 3
Paul Roberts 4

当我通过python搜索数据库时,我只能进行完全匹配搜索。但我希望能够进行模糊搜索,我可以搜索“史密斯”这个名字并带回约翰史密斯和爱德华史密斯。

2 个答案:

答案 0 :(得分:5)

以最简单的形式,您可以使用LIKE比较:

SELECT * FROM table WHERE name LIKE '%smith%';

使用FULLTEXT索引(大量文本)可以完成更精细的搜索,SOUNDEX()(适用于英语单词,与其他语言匹配,从“有点可行”到“可怕”), levenshtein词语距离等。

答案 1 :(得分:0)

import MySQLdb
search_str = 'smith'
conn = MySQLdb.connect(host="localhost", user="me",passwd="pw",db="mydb")
c = conn.cursor()
c.execute("SELECT name FROM mytable WHERE name LIKE %s", '%' + search_str + '%')
c.fetchall()
c.close()
conn.close()