2016-03-21 5 views
13

मैं पाइथन के Enum प्रकार का उपयोग करने वाली तालिका में एनम कॉलम रखने के लिए this example का पालन करने का प्रयास कर रहा हूं। मैं enum को परिभाषित करता हूं, फिर उदाहरण में दिखाए गए कॉलम को पास करता हूं, लेकिन मुझे ValueError: <enum 'FruitType'> is not a valid Enum मिलता है। मैं एक पायथन एनम के साथ एक SQLAlchemy enum कॉलम को सही ढंग से परिभाषित कैसे करूं?पायथन एनम के साथ एसक्यूएलकेमी एनम कॉलम को परिभाषित करना "वैल्यूएरर: वैध वैध नहीं है"

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 
import enum 

app = Flask(__name__) 
db = SQLAlchemy(app) 

class FruitType(enum.Enum): 
    APPLE = "Crunchy apple" 
    BANANA = "Sweet banana" 

class MyTable(db.Model): 
    id = db.Column(db.Integer, primary_key = True) 
    fruit_type = db.Column(enum.Enum(FruitType)) 
File "why.py", line 32, in <module> 
    class MyTable(db.Model): 
    File "why.py", line 34, in MyTable 
    fruit_type = db.Column(enum.Enum(FruitType)) 
    File "/usr/lib/python2.7/dist-packages/enum/__init__.py", line 330, in __call__ 
    return cls.__new__(cls, value) 
    File "/usr/lib/python2.7/dist-packages/enum/__init__.py", line 642, in __new__ 
    raise ValueError("%s is not a valid %s" % (value, cls.__name__)) 
ValueError: <enum 'FruitType'> is not a valid Enum 

उत्तर

23

स्तंभ प्रकार sqlalchemy.types.Enum होना चाहिए। आप पाइथन Enum फिर से टाइप कर रहे हैं, जो मान के लिए मान्य है लेकिन कॉलम प्रकार नहीं है।

class MyTable(db.Model): 
    id = db.Column(db.Integer, primary_key = True) 
    fruit_type = db.Column(db.Enum(FruitType)) 
+0

यह एसक्लाक्लेमी 1.1 और ऊपर के साथ काम करता है – Anconia

संबंधित मुद्दे