|
|
|
|
|
from sqlaload.schema import connect, get_table, create_table, load_table, drop_table, create_column, create_index
|
|
from sqlalchemy.engine import Engine
|
|
from sqlaload.write import add_row, update_row
|
|
from sqlaload.write import upsert, update, delete
|
|
from sqlaload.query import distinct, all, find_one, find, query
|
|
|
|
|
|
class DB(object):
|
|
def __init__(self, engine):
|
|
if isinstance(engine, (str, unicode)):
|
|
self.engine = connect(engine)
|
|
elif isinstance(engine, Engine):
|
|
self.engine = engine
|
|
else:
|
|
raise Exception('unknown engine format')
|
|
|
|
def create_table(self, table_name):
|
|
return Table(self.engine, create_table(self.engine, table_name))
|
|
|
|
def load_table(self, table_name):
|
|
return Table(self.engine, load_table(self.engine, table_name))
|
|
|
|
def get_table(self, table_name):
|
|
return Table(self.engine, get_table(self.engine, table_name))
|
|
|
|
def drop_table(self, table_name):
|
|
drop_table(self.engine, table_name)
|
|
|
|
def query(self, sql):
|
|
return query(self.engine, sql)
|
|
|
|
|
|
class Table(object):
|
|
def __init__(self, engine, table):
|
|
self.engine = engine
|
|
self.table = table
|
|
|
|
# sqlaload.write
|
|
|
|
def add_row(self, *args, **kwargs):
|
|
return add_row(self.engine, self.table, *args, **kwargs)
|
|
|
|
def update_row(self, *args, **kwargs):
|
|
return update_row(self.engine, self.table, *args, **kwargs)
|
|
|
|
def upsert(self, *args, **kwargs):
|
|
return upsert(self.engine, self.table, *args, **kwargs)
|
|
|
|
def update(self, *args, **kwargs):
|
|
return update(self.engine, self.table, *args, **kwargs)
|
|
|
|
def delete(self, *args, **kwargs):
|
|
return delete(self.engine, self.table, *args, **kwargs)
|
|
|
|
# sqlaload.query
|
|
|
|
def find_one(self, *args, **kwargs):
|
|
return find_one(self.engine, self.table, *args, **kwargs)
|
|
|
|
def find(self, *args, **kwargs):
|
|
return find(self.engine, self.table, *args, **kwargs)
|
|
|
|
def all(self):
|
|
return all(self.engine, self.table)
|
|
|
|
def distinct(self, *args, **kwargs):
|
|
return distinct(self.engine, self.table, *args, **kwargs)
|
|
|
|
# sqlaload.schema
|
|
|
|
def create_column(self, name, type):
|
|
return create_column(self.engine, self.table, name, type)
|
|
|
|
def create_index(self, columns, name=None):
|
|
return create_index(self.engine, self.table, columns, name=name)
|
|
|
|
|
|
def create(engine):
|
|
""" returns a DB object """
|
|
return DB(engine)
|