On Jul 11, 2013, at 11:30 AM, Richard Gomes <rgomes.i...@gmail.com> wrote:

> hello,
> 
> I've previously defined inserts and updates by hand in my application, which 
> is working fine, not using SQLAlchemy at the moment.
> At this point, I'd like to employ SQLAlchemy to generate these inserts and 
> updates for me. And that's all.
> I mean: just generate the queries for me. I'm not going to execute via 
> SQLAlchemy at this point.
> 
> 
> I did the test below:
> 
> engine = create_engine('postgresql://localhost/sample')
> metadata = MetaData()
> metadata.bind = engine
> t = metadata.tables['company_valuation_measures']
> print(str(   
> t.update().values(trailing_pe=1.0).where(t.c.symbol=='dummy').where(t.c.date=='dummy')
>    ))
> 
> 
> I obtained:
> 
> UPDATE company_valuation_measures
> SET trailing_pe=%(trailing_pe)s
> WHERE company_valuation_measures.symbol = %(symbol_1)s AND 
> company_valuation_measures.date = %(date_1)s
> 
> 
> The trouble is: field names are 'symbol' and 'date', not 'symbol_1', not 
> 'date_1'.
> 
> Could someone point out what I'm doing wrong?

"symbol_1" and "date_1" are generated bound parameter names, which SQLAlchemy 
will match up to those "dummy" names which you passed in.  since you aren't 
interested in the automatic linkage of "dummy" to binds and you're looking for 
binds that have a specific name, you can use bindparam():

t.update().values(...).where(t.c.symbol==bindparam('symbol')).where(t.c.date==bindparam('date'))

however, the update() construct might complain on this as insert()/update() 
both reserve the column name binds for the SET/VALUES clause.   you may need to 
name them something else (like "symbol_where" or something like that).


-- 
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to