2

宣言型ベースでPostgreSQLとSQLAlchemyを使用してDBのスキーマを作成していて、答えられたと思う質問に遭遇しましたが、どういうわけか構文が間違っています。

多次元配列のエントリを作成することを考えています(2Dのみが必要ですが、他の問題が発生した場合に備えて、n次元配列ソリューションを要求すると思いました)。私は本質的に持っている必要がありますsome_field[string][string]が、それを行う方法がわかりません。

class SomeTable(Base):
    __tablename__ = 'some_table'
   multi_d_array = Column(postgresql.ARRAY(String)) #How do I make 2D+?

以前のバージョンでは、次元は明らかに強制されていませんでした(リンク: SQLAlchemyのPostgreSQL多次元配列)が、明らかにこれはパッチが適用されました(リンク:https ://groups.google.com/forum/?fromgroups =#!topic / sqlalchemy / w4-nbMdxxUg )。ドキュメントにはまだ強制されていないと書かれていますが(リンク: http: //docs.sqlalchemy.org/en/latest/dialects/postgresql.html)、DBを爆破する前にコードが正常に機能することを確認したかっただけです。

初心者の質問を手伝ってくれてありがとう。

4

1 に答える 1

0

Postgresql 自体は、配列の次元数を強制しません。特定の次元数で指定したとしても、すべての配列は N 次元です。リンクされた電子メールから:

http://www.postgresql.org/docs/9.1/static/arrays.html

「現在の実装では、宣言された次元数も強制されません。特定の要素型の配列は、サイズや次元数に関係なく、すべて同じ型であると見なされます。そのため、CREATE で配列のサイズや次元数を宣言すると、 TABLE は単なるドキュメントであり、実行時の動作には影響しません。」

SQLAlchemy 0.8 では、ARRAY 型にオプションのパラメーター「dimension=N」が含まれるようになりました。これにより、特定の次元数を指定できます。これにより、SQLAlchemy 型が Python で着信配列データをより迅速に処理できるようになります (必要はありません)。次元数を推測する)、また、その次元数で具体的に DDL (つまり、CREATE TABLE) を発行させますが、このパラメーターがなければ、すべてがそのまま機能します。あなたが参照するメールは、DDL を発行するときに正確な次元数で「INTEGER [][]」と具体的に言うことを望んでいたユーザーですが、実際には必要ありません。

于 2012-12-15T04:40:12.850 に答える