我有两个表,和一个关系一对多,定义后。
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship("Child", backref="parent")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))如果我试图访问Child.parent,就会得到一个错误。但是,如果初始化子实例,错误就会消失。
我猜初始化一个修改过的Child类,但是我不明白如何初始化。在不创建子实例的情况下,我如何能够访问Child.parent?
In [1]: Child.parent
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-8b757eeb36c4> in <module>()
----> 1 Child.parent
AttributeError: type object 'Child' has no attribute 'parent'
In [2]: Child()
Out[2]: <etl.es_utils.test_to_rm.Child at 0x7f38caf42c50>
In [3]: Child.parent发布于 2015-11-06 15:43:34
我没有使用backref,而是定义了双方的关系,它解决了这个问题。
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship("Child")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Parent")https://stackoverflow.com/questions/33220289
复制相似问题