multiple strings in search

This commit is contained in:
q
2013-03-11 19:30:01 +02:00
parent a2e7e28317
commit d50f244dd6

View File

@@ -32,7 +32,7 @@ def setup_options():
help="Exclude folder name from the lists. This option may be issued several times") help="Exclude folder name from the lists. This option may be issued several times")
parser.add_argument("-f",action="store",dest="sqlfile",default=SQLFILE, parser.add_argument("-f",action="store",dest="sqlfile",default=SQLFILE,
help="SQL file name to use [%(default)s]") help="SQL file name to use [%(default)s]")
parser.add_argument("-s",type=str,dest="search",default=False, parser.add_argument("-s",type=str,action='append',dest="search",default=[],
help="Search list based on path pattern") help="Search list based on path pattern")
parser.add_argument("--match",type=str,dest="match",default=False, parser.add_argument("--match",type=str,dest="match",default=False,
help="Search for closest match from basenames, can be helped with adding -s") help="Search for closest match from basenames, can be helped with adding -s")
@@ -170,10 +170,12 @@ def find_duplicates(sqlfile):
return duphash return duphash
def searchdb(sqlfile,needle): def searchdb(sqlfile,needle):
needle=['%'+i+'%' for i in needle]
like_query=' OR '.join(['file LIKE ?' for i in needle])
conn=sqlite3.connect(sqlfile) conn=sqlite3.connect(sqlfile)
conn.text_factory=str conn.text_factory=str
db=conn.cursor() db=conn.cursor()
db.execute("SELECT file FROM list WHERE file LIKE ? ORDER BY file",('%'+needle+'%',)) db.execute("SELECT file FROM list WHERE "+like_query+" ORDER BY file",needle)
for row in db: for row in db:
print(row[0]) print(row[0])
@@ -182,8 +184,10 @@ def matchdb(sqlfile,needle,helper):
conn=sqlite3.connect(sqlfile) conn=sqlite3.connect(sqlfile)
conn.text_factory=str conn.text_factory=str
db=conn.cursor() db=conn.cursor()
if helper: if len(helper)>0:
db.execute("SELECT file FROM list WHERE file LIKE ?",('%'+needle+'%',)) helper=['%'+i+'%' for i in helper]
like_query=' OR '.join(['file LIKE ?' for i in helper])
db.execute("SELECT file FROM list WHERE "+like_query,helper)
else: else:
db.execute("SELECT file FROM list") db.execute("SELECT file FROM list")
ratio=0 ratio=0
@@ -210,7 +214,7 @@ def main():
if not os.path.exists(options.sqlfile): if not os.path.exists(options.sqlfile):
createdb(options.sqlfile); createdb(options.sqlfile);
if options.search and not options.match: if len(options.search)>0 and not options.match:
searchdb(options.sqlfile,options.search) searchdb(options.sqlfile,options.search)
sys.exit(0) sys.exit(0)
if options.match: if options.match: