provides higher level functions for accessing database schema information.
"""
- def __init__(self, conn):
+ def __init__(self, bind):
"""Initialize the instance.
- :param conn: a :class:`~sqlalchemy.engine.base.Connectable`
+ :param bind: a :class:`~sqlalchemy.engine.base.Connectable`
"""
- self.conn = conn
+ # ensure initialized
+ bind.connect()
+
+ # this might not be a connection, it could be an engine.
+ self.bind = bind
+
# set the engine
- if hasattr(conn, 'engine'):
- self.engine = conn.engine
+ if hasattr(bind, 'engine'):
+ self.engine = bind.engine
else:
- self.engine = conn
+ self.engine = bind
self.dialect = self.engine.dialect
self.info_cache = {}
"""
if hasattr(self.dialect, 'get_schema_names'):
- return self.dialect.get_schema_names(self.conn,
+ return self.dialect.get_schema_names(self.bind,
info_cache=self.info_cache)
return []
"""
if hasattr(self.dialect, 'get_table_names'):
- tnames = self.dialect.get_table_names(self.conn,
+ tnames = self.dialect.get_table_names(self.bind,
schema,
info_cache=self.info_cache)
else:
def get_table_options(self, table_name, schema=None, **kw):
if hasattr(self.dialect, 'get_table_options'):
- return self.dialect.get_table_options(self.conn, table_name, schema,
+ return self.dialect.get_table_options(self.bind, table_name, schema,
info_cache=self.info_cache,
**kw)
return {}
:param schema: Optional, retrieve names from a non-default schema.
"""
- return self.dialect.get_view_names(self.conn, schema,
+ return self.dialect.get_view_names(self.bind, schema,
info_cache=self.info_cache)
def get_view_definition(self, view_name, schema=None):
"""
return self.dialect.get_view_definition(
- self.conn, view_name, schema, info_cache=self.info_cache)
+ self.bind, view_name, schema, info_cache=self.info_cache)
def get_columns(self, table_name, schema=None, **kw):
"""Return information about columns in `table_name`.
dict containing optional column attributes
"""
- col_defs = self.dialect.get_columns(self.conn, table_name, schema,
+ col_defs = self.dialect.get_columns(self.bind, table_name, schema,
info_cache=self.info_cache,
**kw)
for col_def in col_defs:
primary key information as a list of column names.
"""
- pkeys = self.dialect.get_primary_keys(self.conn, table_name, schema,
+ pkeys = self.dialect.get_primary_keys(self.bind, table_name, schema,
info_cache=self.info_cache,
**kw)
optional name of the primary key constraint.
"""
- pkeys = self.dialect.get_pk_constraint(self.conn, table_name, schema,
+ pkeys = self.dialect.get_pk_constraint(self.bind, table_name, schema,
info_cache=self.info_cache,
**kw)
"""
- fk_defs = self.dialect.get_foreign_keys(self.conn, table_name, schema,
+ fk_defs = self.dialect.get_foreign_keys(self.bind, table_name, schema,
info_cache=self.info_cache,
**kw)
return fk_defs
other options passed to the dialect's get_indexes() method.
"""
- indexes = self.dialect.get_indexes(self.conn, table_name,
+ indexes = self.dialect.get_indexes(self.bind, table_name,
schema,
info_cache=self.info_cache, **kw)
return indexes
def reflecttable(self, table, include_columns):
- dialect = self.conn.dialect
+ dialect = self.bind.dialect
# MySQL dialect does this. Applicable with other dialects?
if hasattr(dialect, '_connection_charset') \
if referred_schema is not None:
sa_schema.Table(referred_table, table.metadata,
autoload=True, schema=referred_schema,
- autoload_with=self.conn,
+ autoload_with=self.bind,
**reflection_options
)
for column in referred_columns:
[referred_schema, referred_table, column]))
else:
sa_schema.Table(referred_table, table.metadata, autoload=True,
- autoload_with=self.conn,
+ autoload_with=self.bind,
**reflection_options
)
for column in referred_columns: