1

私は多くの種類の認証を行っているため、1 つのベース pos​​tgres テーブル (「authentications」と呼ばれる) があり、他の種類の認証はそこから派生しています。たとえば、パスワードを使用して認証されるエンティティは「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 の関係が必要です。実際、私はこの関係を動的に構築しようとしているので、1 人のユーザーがパスワードを使用して認証されると、SQLAlchemy は "Users" テーブルを "Password_Authentications" テーブルにリンクします。別のタイプの認証がある場合は、代わりにユーザーをそのテーブルにリンクする必要があります。User がリンクするすべてのテーブルに共通する唯一のことは、それらが Authentications テーブルから派生していることです。したがって、「Users」テーブルには、このテーブルへの外部キーがあります。

上記をどのように達成できますか?それは可能ですか?

4

1 に答える 1

3

SA は、モデル オブジェクトの継承に関して をINHERITSサポートしていません。ただし、 Mikeが 2 つを一緒に使用する方法とその制限を示しているPostgreSQLInheritanceレシピpostgresqlをご覧ください。

また、 Python、SQLAlchemy、および Postgresqlへの回答も参照してください。Inheritance in terms of OOPpostgresql table inheritance


リンクされたリソースからコード サンプルを投稿すると、不要な重複とかなり長い回答が発生し、完全なソリューションを提供することはできません。

于 2012-06-28T20:46:53.157 に答える