如何在sqlalchemy中“检查”自定义类型

2024-10-01 22:42:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的ChoiceString自定义列/数据类型:

class ChoiceString(types.TypeDecorator):

    impl = types.String

    def __init__(self, choices, **kw):
        self.choices = dict(choices)
        super(ChoiceString, self).__init__(**kw)

    def process_bind_param(self, value, dialect):
        return [k for k, v in self.choices.iteritems() if v == value][0]

    def process_result_value(self, value, dialect):
        return self.choices[value]

我使用mapper遍历表列:

^{pr2}$

但我似乎无法访问自定义类型的choices自定义属性。我还尝试直接“检查”专栏而不是类,但这也不起作用。在

那么,在检查时,我们如何访问sqlalchemy中自定义类型的自定义属性呢?在


Tags: self类型return属性initvaluedefprocess
1条回答
网友
1楼 · 发布于 2024-10-01 22:42:02

您检查的是Column对象,而不是它们的类型。通过Column对象的type属性访问类型:

In [9]: class SomeTableClass(Base):
   ...:     __tablename__ = 'sometableclass'
   ...:     id = Column(Integer, primary_key=True)
   ...:     choices = Column(ChoiceString({ 'asdf': 'qwer'}))
   ...:     

In [10]: mapper = inspect(SomeTableClass)

In [12]: mapper.columns['choices']
Out[12]: Column('choices', ChoiceString(), table=<sometableclass>)

In [13]: mapper.columns['choices'].type.choices
Out[13]: {'asdf': 'qwer'}

相关问题 更多 >

    热门问题