gpt4 book ai didi

postgresql - Postgres 继承与 SQLAlchemy : SQLAlchemy Relationships

转载 作者:行者123 更新时间:2023-11-29 12:47:35 25 4
gpt4 key购买 nike

我有很多类型的身份验证,因此我有一个基本的 postgres 表(称为“身份验证”),其他类型的身份验证 都是从它派生的。例如,使用密码进行身份验证的实体称为“password_authentications”,它使用 postgres 从“authentications”表继承。因此,架构是:

CREATE TABLE authentications (
id
)

CREATE TABLE password_authentications (
id
password
) inherits (authentications)

这非常优雅,因为我还有一个名为“Users”的表,它在身份验证表中有一个外键:

CREATE TABLE users (
id
username
authentications_id
)

因此,用户可以通过从身份验证继承的任何内容进行身份验证。因此,将来,如果我们需要使用 RSA 对用户进行身份验证(例如),我要做的就是从描述 RSA 身份验证的身份验证中创建一个基类。

现在我想使用 SQLAlchemy 在 Python 类和这个结构之间建立一个映射。具体来说,我想将一个名为“User”的类映射到名为“users”的表(这很容易完成),但我想要一个关于 password_authentication(而不是关于身份验证)的关系。事实上,我正在寻找动态建立这种关系,所以如果一个用户使用密码进行身份验证,那么 SQLAlchemy 会将“用户”表链接到“Password_Authentications”表。如果有另一种类型的身份验证,则应该将 User 链接到该表。 User 将链接到的所有表的唯一共同点是它们都派生自 Authentications 表。因此,“用户”表在该表中有一个外键。

我怎样才能完成上述任务?有可能吗?

最佳答案

SA在模型对象继承方面不支持postgresqlINHERITS。但是,请看一下 PostgreSQLInheritance食谱,哪里Mike展示了如何将两者结合使用及其局限性。

另请参阅 Python, SQLAlchemy and Postgresql: understanding inheritance 的答案, 其中TokenMacGuy解释了 Inheritance in terms of OOPpostgresql table inheritance 之间的区别。


从链接的资源中发布代码示例会导致不必要的重复和相当冗长的答案,这仍然无法为您提供完整的解决方案。

关于postgresql - Postgres 继承与 SQLAlchemy : SQLAlchemy Relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11251283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com