当我试图用一个包含Python Enum
对象SpeciesType.Cat
的字段Animals
来存储Animals
对象时,我得到了错误
TypeError: object of type 'VisitableType' has no len()
使用SQLAlchemy在MySQL中存储python3Enum
的正确方法是什么?在
# SQLALCHEMY CODE ########################
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class SpeciesType(Enum):
Cat = 1
Dog = 2
class Animals(Base):
__tablename__ = 'animals'
id = Column(String(16), primary_key=True)
species = Column(Enum(SpeciesType))
# REGULAR CODE ########################
import enum
class SpeciesType(enum.Enum):
Cat = 1
Dog = 2
class MyClass:
@property
def session(self):
....
def insertToDB(self):
kitty = Animals(id='kitty', species=SpeciesType.Cat)
self.session.add(kitty)
self.session.commit()
c = MyClass()
c.insertToDB()
在修复sqlalchemy.enum
和Enum.enum
之间的名称冲突后,将出现以下新错误。在
sqlalchemy.exc.StatementError: (builtins.LookupError) "SpeciesType.Cat" is not among the defined enum values [SQL: 'INSERT INTO animals (id, species) VALUES (%(id)s, %(species)s)'] [parameters: [{'species': , 'id': 'kitty'}]]
看起来您要创建两次
Animals
枚举,这意味着您将有两个碰巧具有相同名称的不同枚举。在只定义一次,然后将其导入任何需要它的地方。在
相关问题 更多 >
编程相关推荐