gpt4 book ai didi

python - SqlAlchemy UserDefinedType 基于内置类型,带有附加方法

转载 作者:行者123 更新时间:2023-11-30 23:33:14 26 4
gpt4 key购买 nike

我有类Foo,其定义为:

class Foo(object):
def bar(self):
pass

我想扩展 sqlalchemy 类型:

class MyUnicode(Foo, sqlalchemy.Unicode):
def bar(self):
print "MyUnicode::bar"

并像这样定义表:

Base = declarative_base()
class Table(Base):
__tablename__ = "Table"

first = Column(Unicode(16))
second = Column(MyUnicode(16))

最后,我希望能够像这样使用它:

t = query(Table).first()
t.bar()

问题可能出在 TypeEngine 上,因为调试器显示 tunicode 的类型,而不是 MyUnicode 甚至是 sqlalchemy.Unicode

我尝试这样做:

class myunicode(Foo, unicode):
def bar(self):
print "myunicode::bar"

class MyUnicode(sqlalchemy.Unicode):

@property
def python_type(self):
return myunicode

但这不起作用。有什么建议吗?

最佳答案

我认为您需要覆盖 def result_processor(self, dialect, coltype): 因为您从数据库获取的类型仍然只是一个 unicode 字符串,您必须进行转换进入你的Python类型。

类似这样的事情:

def result_processor(self, dialect, coltype):
def process(value):
if value is not None:
return MyUnicode(value) # value is a regular unicode string
else:
return MyUnicode()
return process

关于python - SqlAlchemy UserDefinedType 基于内置类型,带有附加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18989364/

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