【问题标题】:How to set default value using SqlAlchemy_Utils ChoiceType如何使用 SqlAlchemy_Utils ChoiceType 设置默认值
【发布时间】:2015-10-15 16:38:01
【问题描述】:

我刚刚从 NoSQL 迁移到 SQL,而且我对 SqlAlchemy ORM 还比较陌生。

在我的用例中,我需要模型中的一个字段来存储给定的选择集:

# models.py
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.utils.types.choice import ChoiceType

Base = declarative_base()    

class User(Base):
    __tablename__ = 'user'
    USER_TYPES = [
       ('user', 'User'),
       ('admin', 'Admin User')
    ]

    id = Column(Integer(), primary_key=True)
    type = Column(ChoiceType(User_Types), default='user')

但是当我运行我的脚本时,我得到:

> SAWarning: Unicode column 'None' has non-unicode default value 'user' specified.
  self.default

并且在我设置默认值并且键入不是“ChoiceType”的其他字段上没有错误)。

谁知道我做错了什么?

谢谢!

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    ChoiceType 列默认为Unicode(255)Unicode 类型是 String 子类,它假定输入和输出为 Python unicode 数据。您应该将默认设置为 unicode 字符串

    type = Column(ChoiceType(USER_TYPES), default=u'user')
    

    也可以设置impl参数

    type = Column(ChoiceType(USER_TYPES, impl=String()), default='user')
    

    【讨论】:

    • 我今天自己发现了这个,但无论如何,我的朋友要感谢你。谢谢!
    • 我会做得更笼统。如果您想重命名这些值。 type = Column(ChoiceType(USER_TYPES), default=USER_TYPES[0][0])
    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2012-04-01
    • 2010-12-09
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多