diff options
Diffstat (limited to 'ipsilon/util/data.py')
-rwxr-xr-x | ipsilon/util/data.py | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/ipsilon/util/data.py b/ipsilon/util/data.py index cbd3b49..2a55bb2 100755 --- a/ipsilon/util/data.py +++ b/ipsilon/util/data.py @@ -189,21 +189,43 @@ class Store(object): if con: con.close() - def get_data(self, plugin): + def get_data(self, plugin, idval=None, name=None, value=None): con = None rows = [] + names = None + values = () + if idval or name or value: + names = "" + if idval: + names += " id=?" + values = values + (idval,) + if name: + if len(names) != 0: + names += " AND" + names += " name=?" + values = values + (name,) + if value: + if len(names) != 0: + names += " AND" + names += " value=?" + values = values + (value,) try: con = sqlite3.connect(self._admin_dbname) cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS " + plugin + "_data (id INTEGER, name TEXT, value TEXT)") - cur.execute("SELECT * FROM " + plugin + "_data") + if not names: + cur.execute("SELECT * FROM " + plugin + "_data") + else: + cur.execute("SELECT * FROM " + plugin + "_data WHERE" + + names, values) rows = cur.fetchall() con.commit() except sqlite3.Error, e: if con: con.rollback() cherrypy.log.error("Failed to load %s data: [%s]" % (plugin, e)) + cherrypy.log.error(repr([names, values])) finally: if con: con.close() |