
Search through SQLite database for a paticular word
By:
allez on Jul 19th, 2011 | syntax:
Python | size: 1.37 KB | hits: 38 | expires: Never
#!/usr/bin/env python
# @author allez <free at penkovsky dot mail dot ua>
# originally written for www.ravel.tk
import sqlite3
import sys
class Connector:
def __init__(self, fname):
self.c = sqlite3.connect(fname)
def q(self,query):
return self.c.execute(query)
def get_all_tables(c):
query = "SELECT * FROM sqlite_master"
tables = c.q(query)
return [table[1] for table in tables]
def get_table_columns(c, table):
query = "PRAGMA table_info(" + table + ")"
res = c.q(query)
return [col[1] for col in res]
def lookup_in_tables(c, word, tables):
found = []
for table in tables:
print "Processing " + table
cols = get_table_columns(c, table)
for col in cols:
try:
query = "SELECT * FROM %s WHERE %s = '%s'" % (table, col, word)
res = c.q(query)
for k in res:
found.append((table,col,k))
except err: print err, query
return found
if __name__ == "__main__":
if len(sys.argv) == 1:
print "USAGE: %s <word> [<dbname>]" % sys.argv[0]
sys.exit()
dbname = 'defaultname.sdb'
if len(sys.argv) > 2: dbname = sys.argv[2]
a = Connector(dbname)
all_tables = get_all_tables(a)
res = lookup_in_tables(a, sys.argv[1], all_tables)
print "results:"
for i in res:print i