我開(kāi)發(fā)了一個(gè)基于SQLAlchemy的框架。在我的映射器中導(dǎo)入表的代碼如下: for table in tables: columns = [] relationships = {} for column in inspect.getmembers(table, lambda a: not (inspect.isroutine(a)) and ( type(a) == Column or type(a) == RelationshipProperty)): if type(column[1]) == Column: column[1].name = column[0] columns.append(column[1]) else: column[1].argument = list(filter(lambda t: t.__name__ == column[1].argument, tables))[0] relationships[column[0]] = column[1] sql_table = Table(table.__tablename__, base.metadata, *columns, extend_existing=True) mapper(table, sql_table, properties=relationships) base.metadata.create_all()然后我定義了各種表:Permission.py:class Permission(TableModel):__tablename__ = 'permission'network_id = Column(String(255), ForeignKey("network.id", ondelete="CASCADE"), primary_key=True, default=check_network_validity)user_id = Column(Integer, ForeignKey("user.id", ondelete="CASCADE"), primary_key=True)user = relationship("User", back_populates="permissions", foreign_keys=user_id)network = relationship("Network", back_populates="permissions", foreign_keys=network_id)type = Column(Enum(TypeEnum), primary_key=True)validated_by = Column(Integer, ForeignKey("user.id", ondelete="CASCADE"), nullable=True, default=None)end_validity = Column(DateTime, nullable=True)created = Column(DateTime, default=datetime.utcnow())last_updated = Column(DateTime, default=datetime.utcnow(), onupdate=datetime.utcnow())任何想法?甚至頂測(cè)試一些東西?
1 回答

至尊寶的傳說(shuō)
TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
問(wèn)題實(shí)際上是同一個(gè)模塊加載了不同的路徑。所以我的外鍵沒(méi)有引用正確的表。
添加回答
舉報(bào)
0/150
提交
取消