It doesn't appear that the "default" column_info field allows for anything
other than a generic default. I currently have the following event handler:
@event.listens_for(Table, 'column_reflect')
def _set_fetched_value_for_triggered_columns(inspector, table, column_info):
if column_info['name'] in ('current_version_num', 'version_num'):
column_info['default'] = FetchedValue()
and am getting the following failure on reflection:
...
<local-path>/lib/python2.7/site-packages/sqlalchemy/engine/reflection.py:657
: in _reflect_column
sql.text(col_d['default']), _reflected=True
<local-path>/lib/python2.7/site-packages/sqlalchemy/sql/elements.py:1379: in
_create_text
stmt = TextClause(text, bind=bind)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _
self = <sqlalchemy.sql.elements.TextClause object at 0x10e88aa50>
text = FetchedValue(), bind = None
def __init__(
self,
text,
bind=None):
self._bind = bind
self._bindparams = {}
def repl(m):
self._bindparams[m.group(1)] = BindParameter(m.group(1))
return ':%s' % m.group(1)
# scan the string and search for bind parameter names, add them
# to the list of bindparams
> self.text = self._bind_params_regex.sub(repl, text)
E TypeError: expected string or buffer
<local-path>/lib/python2.7/site-packages/sqlalchemy/sql/elements.py:1238:
TypeError
Looking at the code
<https://bitbucket.org/zzzeek/sqlalchemy/src/9a5943bf76cd436484a85a6d9478507c9bac3b08/lib/sqlalchemy/engine/reflection.py?at=master&fileviewer=file-view-default#reflection.py-652>
it
explicitly wraps it in a text object. Thoughts?
Thanks,
Derek
On Wednesday, February 1, 2017 at 8:20:34 AM UTC-8, Mike Bayer wrote:
>
> you would use the column_reflect event and set the value of the
> "default" in the given dictionary to be your FetchedValue object.
>
>
>
> On 01/31/2017 05:06 PM, [email protected] <javascript:> wrote:
> > I am attempting to reflect an existing PostgreSQL database that has
> > triggers setting a version_num column. Reading the docs SQLAlchemy needs
> > to be told the the value is a FetchedValue(), however there is no way to
> > do this via the the "column_reflect" event handler. I also attempted to
> > manually define the column on the table but it then excludes the column
> > from the entire reflection process. Is there any other way to do this or
> > can 'server_default' be added to the list of allowed column_info keys?
> >
> > Thanks,
> > Derek
> >
> > --
> > SQLAlchemy -
> > The Python SQL Toolkit and Object Relational Mapper
> >
> > http://www.sqlalchemy.org/
> >
> > To post example code, please provide an MCVE: Minimal, Complete, and
> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full
> > description.
> > ---
> > You received this message because you are subscribed to the Google
> > Groups "sqlalchemy" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> > an email to [email protected] <javascript:>
> > <mailto:[email protected] <javascript:>>.
> > To post to this group, send email to [email protected]
> <javascript:>
> > <mailto:[email protected] <javascript:>>.
> > Visit this group at https://groups.google.com/group/sqlalchemy.
> > For more options, visit https://groups.google.com/d/optout.
>
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.