Python SQLAchemy使用TypeDecorator创建新的大写代码字段类型

Python SQLAchemy使用TypeDecorator创建新的大写代码字段类型,python,sqlalchemy,Python,Sqlalchemy,新年快乐。祝你在2016年一切顺利 我想创建一个新的列类型,它在指定时自动转换为大写。到目前为止,我有以下代码: class CodeColumn(db.TypeDecorator): impl = db.String def process_bind_param(self, value, dialect): return value.upper() def process_result_value(self, value, dialect):

新年快乐。祝你在2016年一切顺利

我想创建一个新的列类型,它在指定时自动转换为大写。到目前为止,我有以下代码:

class CodeColumn(db.TypeDecorator):
    impl = db.String

    def process_bind_param(self, value, dialect):
        return value.upper()

    def process_result_value(self, value, dialect):
        return value.upper()


class Item(db.Model):
    __tablename__ = 'item'
    code = db.Column(CodeColumn(30), primary_key=True)
    name = db.Column(db.String(128), nullable=False)
它似乎可以工作,但该值仅在db.session.commit()上转换为大写:

是否可以修改代码而不向各个列添加实现(如属性setter),而是向TypeDecorator添加实现,以便在首次指定时自动将这些字段的值转换为大写

我知道我可以通过事件或属性设置器来实现效果,但我希望有一个自定义列类型,以避免在多个位置设置这些事件和设置器

谢谢

./manage.py shell
>>> i = Item()
>>> i.code = 'apple200'
>>> i.code
'apple200'
>>> i.name = 'Apples 200'
>>> db.session.add(i)
>>> db.session.flush()
>>> i.code
'apple200'
>>> db.session.commit()
>>> i.code
'APPLE200'
>>>