Python SQLAchemy使用TypeDecorator创建新的大写代码字段类型
新年快乐。祝你在2016年一切顺利 我想创建一个新的列类型,它在指定时自动转换为大写。到目前为止,我有以下代码: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):
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'
>>>