diff options
Diffstat (limited to 'cgi/database.py')
-rw-r--r-- | cgi/database.py | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/cgi/database.py b/cgi/database.py index 9b2c1e7..819c253 100644 --- a/cgi/database.py +++ b/cgi/database.py @@ -1,7 +1,8 @@ # coding=utf-8 import threading -import _mysql +import MySQLdb +import MySQLdb.cursors from settings import Settings database_lock = threading.Lock() @@ -19,57 +20,58 @@ except ImportError: def OpenDb(): if Settings._.CONN is None: - Settings._.CONN = _mysql.connect(host=Settings.DATABASE_HOST, - user=Settings.DATABASE_USERNAME, - passwd=Settings.DATABASE_PASSWORD, - db=Settings.DATABASE_DB) + Settings._.CONN = MySQLdb.connect(host=Settings.DATABASE_HOST, + user=Settings.DATABASE_USERNAME, + passwd=Settings.DATABASE_PASSWORD, + db=Settings.DATABASE_DB, + cursorclass=MySQLdb.cursors.SSDictCursor) -def FetchAll(query, method=1): +def FetchAll(query, params=None): """ Query and fetch all results as a list """ db = Settings._.CONN - db.query(query) - r = db.use_result() - return r.fetch_row(0, method) + c = db.cursor() + c.execute(query, params) + return c.fetchall() -def FetchOne(query, method=1): +def FetchOne(query, params=None): """ Query and fetch only the first result """ db = Settings._.CONN - db.query(query) - r = db.use_result() - try: - return r.fetch_row(1, method)[0] - except: - return None + c = db.cursor() + c.execute(query, params) + return c.fetchone() -def UpdateDb(query): +def UpdateDb(query, params=None): """ Update the DB (UPDATE/DELETE) and return # of affected rows """ db = Settings._.CONN - db.query(query) - return db.affected_rows() + c = db.cursor() + c.execute(query, params) + return c.rowcount -def InsertDb(query): +def InsertDb(query, params=None): """ Insert into the DB and return the primary key of new row """ db = Settings._.CONN - db.query(query) - return db.insert_id() + c = db.cursor() + c.execute(query, params) + return c.lastrowid def CloseDb(): if Settings._.CONN is not None: Settings._.CONN.close() + Settings._.CONN = None |