这是一个初级问题。
我有一个 mtypes 目录:
mtype_id name
1 'mtype1'
2 'mtype2'
[etc]
和一个对象目录,它必须有一个关联的mtype:
obj_id mtype_id name
1 1 'obj1'
2 1 'obj2'
3 2 'obj3'
[etc]
我试图通过创建以下模式在 SQLAlchemy 中做到这一点:
mtypes_table = Table('mtypes', metadata,
Column('mtype_id', Integer, primary_key=True),
Column('name', String(50), nullable=False, unique=True),
)
objs_table = Table('objects', metadata,
Column('obj_id', Integer, primary_key=True),
Column('mtype_id', None, ForeignKey('mtypes.mtype_id')),
Column('name', String(50), nullable=False, unique=True),
)
mapper(MType, mtypes_table)
mapper(MyObject, objs_table,
properties={'mtype':Relationship(MType, backref='objs', cascade="all, delete-orphan")}
)
当我尝试添加一个简单的元素时,例如:
mtype1 = MType('mtype1')
obj1 = MyObject('obj1')
obj1.mtype=mtype1
session.add(obj1)
我收到错误:
AttributeError: 'NoneType' object has no attribute 'cascade_iterator'
有什么想法吗?
最佳答案
你尝试过吗:
Column('mtype_id', ForeignKey('mtypes.mtype_id')),
而不是:
Column('mtype_id', None, ForeignKey('mtypes.mtype_id')),
另请参阅:https://docs.sqlalchemy.org/en/13/core/constraints.html
关于python - SQLAlchemy 中的多对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2952010/