आप विशेषता के लिए एक एसक्यूएल समारोह असाइन कर सकते हैं:
from sqlalchemy import func
object.data = func.compress(mydata)
session.add(object)
session.commit()
यहाँ एक अधिक डीबी नास्तिक कम() फ़ंक्शन का उपयोग कर एक उदाहरण है:
from sqlalchemy import *
from sqlalchemy.orm import *
from 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"
आप इसे @validates साथ स्वत: कर सकते हैं :
from sqlalchemy.orm import validates
class MyClass(Base):
# ...
data = Column(BLOB)
@validates("data")
def _set_data(self, key, value):
return func.compress(value)
आप इसे फ्लश से पहले अजगर में पठनीय चाहते हैं, तो आप इसे स्थानीय स्तर पर memoize नहीं करनी होंगी और इसे एक्सेस करने के लिए एक वर्णक का उपयोग करें।
'object = object() 'मुझे लगता है कि यह एक अच्छा विचार नहीं है। आप टाइप ऑब्जेक्ट 'ऑब्जेक्ट' ओवरराइट कर रहे हैं ... – glglgl
मैंने इसे बदल दिया। धन्यवाद –