mysql Compress()与sqlalchemy
发布于 2021-01-29 16:35:31
表 :
ID (整数主键)
数据 (blob)
我使用mysql和sqlalchemy。要插入数据,我使用:
o = Demo()
o.data = mydata
session.add(o)
session.commit()
我想这样插入表:
INSERT INTO table(data) VALUES(COMPRESS(mydata))
如何使用sqlalchemy做到这一点?
关注者
0
被浏览
47
1 个回答
-
您可以将SQL函数分配给属性:
from sqlalchemy import func object.data = func.compress(mydata) session.add(object) session.commit()
这是使用与数据库无关的lower()函数的示例:
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)
如果希望在刷新之前在python中可读它,则需要在本地对其进行记忆并使用描述符进行访问。