【问题标题】:How to create ENUM in SQLAlchemy?如何在 SQLAlchemy 中创建 ENUM?
【发布时间】:2013-12-17 20:44:46
【问题描述】:
from sqlalchemy import *
from migrate import *

meta = MetaData()
race_enums = ('asian','mideastern','black','nativeamerican','indian','pacific','hispanic','white','other');
profiles_profiles = Table(
    'profiles_profiles', meta,
    Column('id', Integer, primary_key = True),
    Column('user_id', Integer, nullable=False, unique=True),
    Column('race', Enum, race_enums),
    Column('summary', Text, nullable= True),
    Column('my_life', Text, nullable= True),
    Column('to_do', Text, nullable= True),
    Column('favs', Text, nullable= True),
    Column('created_at', DateTime, nullable=True),
    Column('updated_at', DateTime, nullable=True)
)

def upgrade(migrate_engine):
    meta.bind = migrate_engine
    profiles_profiles.create()
    pass

def downgrade(migrate_engine):
    meta.bind = migrate_engine
    profiles_profiles.drop()
    pass

当我 manage.py 升级这个时,我得到这个错误:

AttributeError: 'tuple' object has no attribute '_set_parent_with_dispatch'

【问题讨论】:

    标签: python mysql database enums sqlalchemy


    【解决方案1】:

    您需要传递 race_enum 作为 Enum 的参数,而不是 Column

    您可以将您的tuple 全部传入

    Column('race', Enum('asian','mideastern','black','nativeamerican','indian','pacific','hispanic','white','other'))
    

    或使用*解包race_enums

    Column('race', Enum(*race_enums))
    

    【讨论】:

    • 我在类似情况下无法设置枚举值。您将如何为profiles_profiles 表设置race 的值?它只需要一个字符串吗?
    • @TonyH 我不太清楚你所说的“设置值”是什么意思
    • 我相信他的意思是插入一条记录。 @Wondercricket
    猜你喜欢
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2015-05-07
    • 2012-01-06
    • 2015-05-04
    • 2017-08-15
    相关资源
    最近更新 更多