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, derek....@spacex.com <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 sqlalchemy+...@googlegroups.com <javascript:> 
> > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>. 
> > To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:> 
> > <mailto:sqlal...@googlegroups.com <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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to