gpt4 book ai didi

python - mysql Compress() 与 sqlalchemy

转载 作者:可可西里 更新时间:2023-11-01 06:51:33 24 4
gpt4 key购买 nike

:
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()

这是一个使用与数据库无关的 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 中可读,你需要在本地内存它并使用描述符来访问它。

关于python - mysql Compress() 与 sqlalchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com