SQLAlchemy中的多对一关系 [英] Many-to-one relationship in SQLAlchemy
本文介绍了SQLAlchemy中的多对一关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是一个初学者级别的问题。
我有一个类型的目录:
mtype_id name
1'mtype1'
2'mtype2'
[etc]
和一个对象的目录,它们必须有一个关联的mtype:
obj_id mtype_id名称
1 1'obj1'
2 1'obj2'
3 2'obj3'
[etc]
我正在通过创建以下模式在SQLAlchemy中执行此操作:
Column('mtype_id',Integer,primary_key = True),
列('name',String(50),nullable = False,unique =列('对象',元数据,
列('obj_id',整数,primary_key = True),
列('),
$ b objs_table = mtype_id',None,ForeignKey('mtypes.mtype_id'))
列('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'对象没有属性'cascade_iterator'
任何想法?
解决方案
你尝试过:
列('mtype_id',ForeignKey('mtypes.mtype_id')),
而不是:
列('mtype_id',无,ForeignKey('mtypes.mtype_id' ),
另请参见: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/schema.html#sqlalchemy.schema。 ForeignKey
This is a beginner-level question.
I have a catalog of mtypes:
mtype_id name
1 'mtype1'
2 'mtype2'
[etc]
and a catalog of Objects, which must have an associated mtype:
obj_id mtype_id name
1 1 'obj1'
2 1 'obj2'
3 2 'obj3'
[etc]
I am trying to do this in SQLAlchemy by creating the following schemas:
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")}
)
When I try to add a simple element like:
mtype1 = MType('mtype1')
obj1 = MyObject('obj1')
obj1.mtype=mtype1
session.add(obj1)
I get the error:
AttributeError: 'NoneType' object has no attribute 'cascade_iterator'
Any ideas?
解决方案
Have you tried:
Column('mtype_id', ForeignKey('mtypes.mtype_id')),
instead of:
Column('mtype_id', None, ForeignKey('mtypes.mtype_id')),
See also: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/schema.html#sqlalchemy.schema.ForeignKey
这篇关于SQLAlchemy中的多对一关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文