2013-12-17 16 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 

Quando ho manage.py aggiorno questo, ottengo questo errore:Come creare ENUM in SQLAlchemy?

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

risposta

20

È necessario passare race_enum come argomento per Enum, non Column

è possibile passare in tuple nel suo complesso

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

o utilizzare * per decomprimere race_enums:

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

sto avendo l'impostazione del valore Enum in una situazione simile problema. Come impostare il valore di 'race' per la tabella' profiles_profiles'? Semplicemente prende una stringa? – TonyH

+0

@TonyH Non sono abbastanza sicuro di cosa intendi con "imposta il valore" – Wondercricket

Problemi correlati