Support table dropping and sqlalchemy Connection objects

This commit is contained in:
Andrew Suffield 2012-02-09 13:48:45 +00:00
parent 36507c35f8
commit b62ddfb7ef
2 changed files with 18 additions and 1 deletions

View File

@ -1,6 +1,6 @@
from sqlaload.schema import connect
from sqlaload.schema import create_table, load_table, get_table
from sqlaload.schema import create_table, load_table, get_table, drop_table
from sqlaload.schema import create_column
from sqlaload.write import add_row, update_row
from sqlaload.write import upsert, update

View File

@ -40,6 +40,10 @@ def load_table(engine, table_name):
return table
def get_table(engine, table_name):
# Accept Connection objects here
if hasattr(engine, 'engine'):
engine = engine.engine
if table_name in TABLES[engine]:
return TABLES[engine][table_name]
if engine.has_table(table_name):
@ -47,6 +51,19 @@ def get_table(engine, table_name):
else:
return create_table(engine, table_name)
def drop_table(engine, table_name):
# Accept Connection objects here
if hasattr(engine, 'engine'):
engine = engine.engine
if table_name in TABLES[engine]:
table = TABLES[engine][table_name]
elif engine.has_table(table_name):
table = Table(table_name, engine._metadata)
else:
return
table.drop(engine)
TABLES[engine].pop(table_name, None)
def _guess_type(sample):
if isinstance(sample, bool):
return Boolean