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

Als ich das Upgrade manage.py, bekomme ich diesen Fehler:Wie erstellt man ENUM in SQLAlchemy?

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

Antwort

20

Sie race_enum als Argument übergeben müssen für Enum, nicht Column

Sie können entweder in Ihrem tuple als Ganzes übergeben

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

oder verwenden *auspacken:

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

Ich habe Probleme, den Enum-Wert in einer ähnlichen Situation festzulegen. Wie würden Sie den Wert von "Rennen" für die Tabelle "profiles_profiles" festlegen? Nimmt es einfach eine Schnur? – TonyH

+0

@TonyH Ich bin mir nicht ganz sicher, was du mit "setze den Wert" meinst – Wondercricket

Verwandte Themen