我将类映射到Drupal生成的现有MySQL表.我需要与表格(一对一)联系,但我遇到了问题.两个表的列nid.这两个字段都是主键.没有主键我无法定义外键.关系图不适用于主键.我的版本如下.
class Node(Base): __tablename__ = 'node' nid = Column(Integer, primary_key=True) vid = Column(Integer) uuid = Column(String(128)) type = Column(String) field_data = relationship("NodeFieldData", order_by="NodeFieldData.nid", backref="node") def __repr__(self): return "" % (self.nid, self.vid, self.uuid, self.type) class NodeFieldData(Base): __tablename__ = 'node_field_data' nid = Column(Integer, primary_key=True) type = Column(String, nullable=False) title = Column(String, nullable=False) #nid = Column(Integer, ForeignKey('Node.nid')) def __repr__(self): return " " % (self.nid, self.vid, self.uuid, self.type)
谢谢.
根据评论:
nid = Column(Integer, ForeignKey(Node.nid), primary_key=True)
整个解决方案是:
Base = declarative_base() class Node(Base): __tablename__ = 'node' nid = Column(Integer, primary_key=True) uuid = Column(String(128)) vid = Column(Integer) type = Column(String) # Refferer. field_data = relationship('NodeFieldData', backref="node", uselist=False) def __repr__(self): return "<Node(nid='%s', uuid='%s', vid='%s', type='%s', title='%s')>" % (self.nid, self.uuid, self.vid, self.type, self.field_data.title) class NodeFieldData(Base): __tablename__ = 'node_field_data' nid = Column(Integer, ForeignKey(Node.nid), primary_key=True) #vid = Column(Integer, primary_key=True) title = Column(String, nullable=False) def __repr__(self): return "<Node(nid='%s', title='%s')>" % (self.nid, self.title)