您可以将SQL函数分配给属性:
from sqlalchemy import funcobject.data = func.compress(mydata)session.add(object)session.commit()
这是使用与数据库无关的lower()函数的示例:
from sqlalchemy import *from sqlalchemy.orm import *from sqlalchemy.ext.declarative import declarative_basebase= 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"您可以使用@validates将其自动设置为:
from sqlalchemy.orm import validatesclass MyClass(base): # ... data = Column(BLOB) @validates("data") def _set_data(self, key, value): return func.compress(value)如果希望在刷新之前在python中可读它,则需要在本地对其进行记忆并使用描述符进行访问。



