テーブル:
id(整数主キー)
データ(blob)
私はmysqlとsqlalchemyを使用しています。私が使用するデータを挿入するには:
o = Demo()
o.data = mydata
session.add(o)
session.commit()
私はそのようにテーブルに挿入したいと思います:
INSERT INTO table(data) VALUES(COMPRESS(mydata))
sqlalchemyを使用してこれを行うにはどうすればよいですか?
テーブル:
id(整数主キー)
データ(blob)
私はmysqlとsqlalchemyを使用しています。私が使用するデータを挿入するには:
o = Demo()
o.data = mydata
session.add(o)
session.commit()
私はそのようにテーブルに挿入したいと思います:
INSERT INTO table(data) VALUES(COMPRESS(mydata))
sqlalchemyを使用してこれを行うにはどうすればよいですか?
SQL関数を属性に割り当てることができます。
from sqlalchemy import func
object.data = func.compress(mydata)
session.add(object)
session.commit()
DBに依存しない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で読み取り可能にする場合は、ローカルでメモ化し、記述子を使用してアクセスする必要があります。