定义无外键关系

2024-06-07 17:11:20 发布

您现在位置:Python中文网/ 问答频道 /正文

没有外键我怎么能建立关系?在

@declared_attr 
def custom_stuff(cls): 
    joinstr = 'foreign(Custom.name) == "{name}"'.format(name=cls.__name__)  
    return db.relationship('Custom', primaryjoin=joinstr) 

这将引发一个错误:
ArgumentError: Could not locate any simple equality expressions involving locally mapped foreign key columns for primary join condition

这是可行的,但我认为这是一个相当丑陋的黑客攻击。在

^{pr2}$

有更好的方法吗?在

编辑:额外属性需要添加为@declared_attr,并且必须使用一个关系,因为我们的序列化程序是这样编写的,因此它可以与声明的attr一起工作。在

@hybrid_property或其他方法来执行此操作会有效,但是我们的json序列化程序就会中断。让它发挥作用似乎比定义一段关系更难。在


Tags: 方法name程序序列化关系defcustom外键
1条回答
网友
1楼 · 发布于 2024-06-07 17:11:20

也许你应该指出“关系”这个词的意思。它表示某事物“依赖”另一事物或两者都相互依赖。 如果您试图在ERM(实体关系模型)上定义一个关系,这意味着您应该声明哪个实体“依赖”另一个实体。此外,数据库还有一些技巧,可以更快地处理相互关联的表,而不仅仅是简单的表,这些表是以较高抽象的方式关联的。 你为什么要这么做?在

网友
2楼 · 发布于 2024-06-07 17:11:20

在数据库中创建表时,不必定义关系(这几乎适用于所有SQL)。您仍然可以联接没有预定义外键关系的表(外键的主要原因是为了强制数据一致性,而不是定义可以联接什么)。在

参考-http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.join

如果您仍然想“显示”数据库和表结构/模型,那么最好使用ERwin之类的实体关系建模器(或一些图表软件)。在

相关问题 更多 >

    热门问题