我写了一个用于在数据库中搜索字符串的类(搜索器),但是当我要执行脚本时会出现以下错误:
NameError:未定义名称“搜索者”
我的代码:
class searcher:
def __init__(self, dbname):
self.con = sqlite3.connect(dbname)
def __del__(self):
self.con.close()
def getmatchrows(self,q):
fieldlist = 'w0.urlid'
tablelist = ''
clauselist = ''
words = q.split(' ')
tablenumber = 0
wordids = []
for word in words:
wordrow = self.con.execute("select rowid from wordlist where word = '%s'" %word).fetchone()
if wordrow !=None:
wordid = wordrow[0]
wordids.append(wordid)
if tablenumber > 0:
tablelist+=','
clauselist+=' and '
clauselist+='w%d.urlid=w%d.urlid and ' % (tablenumber -1, tablenumber)
fieldlist+=',w%d.location'% tablenumber
tablelist+='wordlocation w%d'% tablenumber
clauselist+='w%d.wordid = %d' % (tablenumber,wordid)
tablenumber+=1
query = 'select %s from %s where %s' % (fieldlist,tablelist,clauselist)
cur = self.con.execute(query)
rows = [row for row in cur]
return rows,wordids
wordsearch = searcher('searchindex.db')
print wordsearch.getmatchrows('indie music')
我在做什么错?!
答案 0 :(得分:4)
代码的最后两行是缩进的,因此它们属于class searcher:
块。但是,searcher
类直到该块结束之后才存在,因此尝试在searcher
中引用wordsearch = searcher('searchindex.db')
会失败。
取消最后两行的缩进。