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 

जब मैं इस उन्नयन manage.py, मैं इस त्रुटि मिलती है:SQLAlchemy में ENUM कैसे बनाएं?

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

उत्तर

20

आप race_enumEnum के लिए एक तर्क के रूप पारित की जरूरत है, नहीं Column

आप या तो पूरे के रूप में अपने tuple में पारित कर सकते हैं

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

या * का उपयोगअनपैक करने के लिए:

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

मुझे इसी तरह की स्थिति में एनम मूल्य निर्धारित करने में समस्या हो रही है। 'Profiles_profiles' तालिका के लिए आप' रेस' का मान कैसे सेट करेंगे? क्या यह बस एक स्ट्रिंग लेता है? – TonyH

+0

@ टोनीएच मुझे पूरा यकीन नहीं है कि "मूल्य निर्धारित करें" से आपका क्या मतलब है – Wondercricket