On Jul 27, 2011, at 8:56 PM, Sergey V. wrote:

> Good day,
> 
> I'm trying to figure out how to do something similar to the Symmetric
> Encryption recipe (http://www.sqlalchemy.org/trac/wiki/UsageRecipes/
> SymmetricEncryption), only on the database side, not in Python.
> 
> I have a suspicion that @compiles decorator may provide a solution,
> but having trouble understaning how to apply it to my case.
> 
> For simplicity, let's imagine a field which stores data in upper case
> but always returns it in lower case... so it needs to generate SQL
> similar to
> 
> "INSERT INTO tablename VALUES (..., upper(...), ...)"

this can be assigned, (1) i.e.

myobject.fieldname = func.upper(somename)    

which you can apply with a @validates decorator  (2)


> 
> on insert and
> 
> "SELECT ..., lower(fieldname) as fieldname, ... FROM tablename"

for this you'd use column_property().  (3)

for the SQL functions themselves we're using func (4)

1: 
http://www.sqlalchemy.org/docs/orm/session.html#embedding-sql-insert-update-expressions-into-a-flush
2: http://www.sqlalchemy.org/docs/orm/mapper_config.html#simple-validators
3: 
http://www.sqlalchemy.org/docs/orm/mapper_config.html#sql-expressions-as-mapped-attributes
4: 
http://www.sqlalchemy.org/docs/core/expression_api.html#sqlalchemy.sql.expression.func

For a slightly old example of some of this kind of thing (probably more 
complicated than you'd need here), see the PostGIS example under 
examples/postgis/.



-- 
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