Michael Bayer wrote:
> Werner F. Bruhin wrote:
>   
>> Figured out how to run the called procedure.
>>
>> sql = db.sa.text("select trans_value from t(:totrans, :username)",
>>                     bindparams=[db.sa.bindparam('totrans', 'some text
>> orig'),
>>                                 db.sa.bindparam('username', me.name)])
>> result = session.execute(sql).fetchone()
>> print result
>> (u'some text orig auf Deutsch',)
>>
>>
>> But still stuck on how to make this an additional column using
>> declarative base and obtaining "some text orig" from another column in
>> the same table.
>>
>> Is this at all possible?
>>     
>
> easiest would be a plain python method that calls the appropriate SQL. 
>   
Michael thanks for these tips, I think I am there.

However I am still getting the feeling that you think this is not a good 
way to go and I wonder if there is something which will bite me down the 
road.

Some additional explanations:
On the tables which are multi language I would like to be able to do 
queries and just get the translation returned from the stored procedure, 
that is why I like to do the mapped column.
> alternatively, if you really want to use a mapped column, the only
> advantage is the inline SQL aspect of it, i.e. performance.  you'd
> construct a select() from the above and pass the dependent columns in -
> using the third example in
> http://www.sqlalchemy.org/docs/05/sqlexpression.html#functions , something
> like
>
> select([column('x1')]).select_from(func.t(mytable.c.totrans,
> mytable.c.username))
>
> then map it using column_property().
>   
Now I have this in my model:

def getCurrentUser():
    return cUser

class Sample(Base):
    __table__ = sa.Table(u'sample', metadata,
    sa.Column(u'id', sa.Integer(), sa.Sequence('gen_sample_id'), 
primary_key=True, nullable=False),
    sa.Column(u'name', sa.String(length=256, convert_unicode=False)),
   
    )

    name_trans = 
sao.column_property(sa.select([sasql.column('trans_value')]).
                        select_from(sa.func.t(__table__.c.name, 
getCurrentUser)))

And doing a query, e.g. like this:
sample = session.query(db.Sample).one()
print sample

Gives me:
Sample(id=1, name=u'some text orig', name_trans=u'some text orig auf 
Deutsch')

Perfect!

Will do some more testing on this, but I think I am pretty close, if not 
already there.

Thanks again!
Werner

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to