python - mysql Compress() with sqlalchemy -


table:
id(integer primary key)
data(blob)

i use mysql , sqlalchemy. insert data use:

o = demo() o.data = mydata session.add(o) session.commit() 

i insert table that:

insert table(data) values(compress(mydata)) 

how can using sqlalchemy?

you can assign sql function attribute:

from sqlalchemy import func object.data = func.compress(mydata) session.add(object) session.commit() 

here's example using more db-agnostic lower() function:

from sqlalchemy import * sqlalchemy.orm import * sqlalchemy.ext.declarative import declarative_base  base= declarative_base()  class a(base):     __tablename__ = "a"      id = column(integer, primary_key=true)     data = column(string)  e = create_engine('sqlite://', echo=true) base.metadata.create_all(e) s = session(e)  a1 = a() a1.data = func.lower("somedata") s.add(a1) s.commit()  assert a1.data == "somedata" 

you can make automatic @validates:

from sqlalchemy.orm import validates class myclass(base):     # ...     data = column(blob)      @validates("data")     def _set_data(self, key, value):         return func.compress(value) 

if want readable in python before flush, you'd need memoize locally , use descriptor access it.


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -