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
Post a Comment