Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """A lightweight wrapper around umysql."""
- import umysql
- import itertools
- class Connection(object):
- """A lightweight wrapper around umysql connections.
- """
- def __init__(self, host, database, user='', password='',
- port=3306, autocommit=True):
- charset = 'utf8'
- self._db = umysql.Connection()
- self._db.connect(
- host, port, user, password, database, autocommit, charset)
- if self._db.is_connected:
- self._db.query('SET time_zone = "+0:00"')
- self._db.query('SET sql_mode = "TRADITIONAL"')
- def __del__(self):
- self.close()
- def close(self):
- self._db.close()
- def query(self, query, *parameters):
- result = self._db.query(query, parameters)
- column_names = [r[0] for r in result.fields]
- return [Row(itertools.izip(column_names, row)) for row in result.rows]
- def get(self, query, *parameters):
- rows = self.query(query, *parameters)
- if not rows:
- return None
- if len(rows) > 1:
- raise Exception(
- 'Multiple rows returned for Connection.get() query')
- else:
- return rows[0]
- def execute(self, query, *parameters):
- return self.execute_lastrowid(query, parameters)
- def execute_lastrowid(self, query, parameters):
- self._db.query(query, parameters)
- last_row_id = self._db.query('SELECT LAST_INSERT_ID()')
- return last_row_id.rows[0][0]
- def execute_rowcount(self, query, *parameters):
- self._db.query(query, parameters)
- affected_rows = self._db.query('SELECT ROW_COUNT()')
- return affected_rows.rows[0][0]
- class Row(dict):
- """A dict that allows for object-like property access syntax."""
- def __getattr__(self, name):
- try:
- return self[name]
- except KeyError:
- raise AttributeError(name)
Add Comment
Please, Sign In to add comment