2013-12-17 14 views
9
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のとき、私はこのエラーを取得:SQLAlchemyでENUMを作成するには?

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

答えて

20

あなたが全体としてあなたtupleに渡すことができますいずれかColumn

Enumの引数としてrace_enumを渡す必要はありません

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

またはを展開する*を使用:

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

同様の状況でEnum値を設定する際に問題があります。 'profiles_profiles'テーブルの' race'の値をどのように設定しますか?それは単に文字列を取るか? – TonyH

+0

@ TonyH「値を設定する」ということは、 – Wondercricket

関連する問題