diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-11-18 09:57:30 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-11-18 10:02:08 -0500 |
commit | 57ca85de0e81222a1e1b875cdc1df10a1220a330 (patch) | |
tree | 30ec839d4062efb46f221a3234bb5d1fd083656c /lib/sqlalchemy/ext/automap.py | |
parent | 4d3bc75738a8f76327a4f0cd344c217ff63e978d (diff) | |
download | sqlalchemy-57ca85de0e81222a1e1b875cdc1df10a1220a330.tar.gz |
Allow MetaData as the target for column_reflect event
The :meth:`_event.DDLEvents.column_reflect` event may now be applied to a
:class:`_schema.MetaData` object where it will take effect for the
:class:`_schema.Table` objects local to that collection.
Fixes: #5712
Change-Id: I6044baa72d096ebd1fd99128270119747d1461b9
Diffstat (limited to 'lib/sqlalchemy/ext/automap.py')
-rw-r--r-- | lib/sqlalchemy/ext/automap.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/sqlalchemy/ext/automap.py b/lib/sqlalchemy/ext/automap.py index 97dff7f4e..8fe318dfb 100644 --- a/lib/sqlalchemy/ext/automap.py +++ b/lib/sqlalchemy/ext/automap.py @@ -529,6 +529,36 @@ the :meth:`.AutomapBase.prepare` method is required; if not called, the classes we've declared are in an un-mapped state. +.. _automap_intercepting_columns: + +Intercepting Column Definitions +=============================== + +The :class:`_schema.MetaData` and :class:`_schema.Table` objects support an +event hook :meth:`_events.DDLEvents.column_reflect` that may be used to intercept +the information reflected about a database column before the :class:`_schema.Column` +object is constructed. For example if we wanted to map columns using a +naming convention such as ``"attr_<columnname>"``, the event could +be applied as:: + + @event.listens_for(Base.metadata, "column_reflect") + def column_reflect(inspector, table, column_info): + # set column.key = "attr_<lower_case_name>" + column_info['key'] = "attr_%s" % column_info['name'].lower() + + # run reflection + Base.prepare(engine, reflect=True) + +.. versionadded:: 1.4.0b2 the :meth:`_events.DDLEvents.column_reflect` event + may be applied to a :class:`_schema.MetaData` object. + +.. seealso:: + + :meth:`_events.DDLEvents.column_reflect` + + :ref:`mapper_automated_reflection_schemes` - in the ORM mapping documentation + + """ # noqa from .declarative import declarative_base as _declarative_base from .. import util |