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

Kiedy manage.py uaktualnić ten, otrzymuję ten błąd:Jak utworzyć ENUM w SQLAlchemy?

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

Odpowiedz

20

Musisz zdać race_enum jako argument dla Enum, nie Column

Można też przejść w tuple jako całość

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

lub użyj * rozpakować race_enums:

+0

Mam problem z ustawieniem wartości wyliczenia w podobnej sytuacji. Jak ustawić wartość 'race' dla tabeli' profiles_profiles'? Czy to po prostu ciąg znaków? – TonyH

+0

@TonyH Nie jestem do końca pewien, co masz na myśli przez "ustaw wartość" – Wondercricket