我有许多类型的身份验证,因此我有一个基本的 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 会将“Users”表链接到“Password_Authentications”表。如果存在其他类型的身份验证,则应将用户链接到该表。用户将链接到的所有表的唯一共同点是它们是从 Authentications 表派生的。因此,“用户”表在该表中有一个外键。
我怎样才能完成上述工作?甚至可能吗?