我刚刚从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”的其他字段上没有错误。
任何人都知道我做错了什么?
谢谢!
答案 0 :(得分:7)
ChoiceType
列为Unicode(255)
。 Unicode
类型是String
子类,它假定输入和输出为Python unicode数据。您应该将default设置为unicode string
type = Column(ChoiceType(USER_TYPES), default=u'user')
或者您可以设置impl
参数
type = Column(ChoiceType(USER_TYPES, impl=String()), default='user')