当前位置:  开发笔记 > 编程语言 > 正文

在sqlalchemy字段中强制值为大写的最佳方法

如何解决《在sqlalchemy字段中强制值为大写的最佳方法》经验,为你挑选了1个好方法。

我是python和sqlalchemy的新手,想要求一个建议.

插入/更新记录时,在SqlAlchemy字段中强制大写值的最佳方法是什么?我应该使用事件吗?这里我使用的是flask-sqlalchemy版本,但我相信它与SQLAlchemy类似.

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()

class Item(db.Model):
    # I need to ensure the code column converts values to uppercase automatically
    code = db.Column(db.String(30), primary_key=True)
    name = db.Column(db.String(250), nullable=False)
    ...

感谢您的建议



1> ShadowRanger..:

验证者可以相当容易地做到这一点:

from sqlalchemy.orm import validates

class Item(db.Model):
    # I need to ensure the code column converts values to uppercase automatically
    code = db.Column(db.String(30), primary_key=True)
    name = db.Column(db.String(250), nullable=False)

    @validates('code', 'name')
    def convert_upper(self, key, value):
        return value.upper()

可以使用描述符或混合类型采用类似的方法,但同时将相同的突变应用于多个列并不是那么容易.混合体确实提供了一些额外的好处,因为在查询中使用它们可以将工作委托给DBMS而不是在Python端执行工作(尽管对于这种特殊情况,在Python端进行工作并不会真正花费你任何成本) .

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有