python - How to return sqlite3 db access responses -
i'm new python. i've created sqlite3 db wrapper class handle database interaction in application. question how return success/failure messages db wrapper class methods, addrow, updrow (which add , update rows) invoking program?
here's class code cobbled far:-
class dbmanager(object): def __init__(self, db): self.conn = lite.connect(db) self.conn.execute('pragma foreign_keys = on') self.conn.execute('pragma synchronous=off') self.conn.commit() self.cur = self.conn.cursor() def query(self, arg): self.cur.execute(arg) self.conn.commit() return self.cur def addrow(self, tablename, data): """ insert data table. data not have escaped. """ global actinserts # create new cursor # tc = self.conn.cursor() # opened @ init tablelist = "" valueholder = "" valuelist = [] key, value in data.items(): if len(tablelist) > 0: tablelist += ', ' valueholder += ', ' # add table column list tablelist += key # add holder valueholder += '?' # build insert values valuelist.append(value) # perform , commit insert try: dbresponse = self.cur.execute("insert " + tablename + " (" + tablelist + ") values (" + valueholder + ");", valuelist) actinserts += 1 except lite.error, e: dbresponse = 'sqlite error np: ' + e.args[0] print 'sqlite error np: ' + e.args[0] return dbresponse def closeconnection (self): self.conn.commit() self.conn.close() def __del__(self): self.conn.close()
i think there 2 ways can this. can:
- change return type of function tuple of (error_code, sql_results), or
- throw exception if query fails (or don't catch 1 handling) , leave exception handling logic user (calling program).
i think option 2 better way.
also, think query building more clear (or @ least more concise) using following (assumes data dictionary)
tablelist = ','.join(list(data.viewkeys())) valueholder = ','.join(['?' in data.viewkeys()]) valuelist = list(data.viewvalues())
Comments
Post a Comment