[解決済み] sqlalchemy の declarative ORM 拡張機能で複数カラムのインデックスを使用する場合
2022-05-16 14:22:48
質問
によると
のドキュメントによると
のコメントと
sqlalchemy.Column
クラスを使用するようにしましょう。
sqlalchemy.schema.Index
を使用して、複数のカラムを含むインデックスを指定します。
しかし、例ではこのようにテーブルオブジェクトを直接使って行う方法を示しています。
meta = MetaData()
mytable = Table('mytable', meta,
# an indexed column, with index "ix_mytable_col1"
Column('col1', Integer, index=True),
# a uniquely indexed column with index "ix_mytable_col2"
Column('col2', Integer, index=True, unique=True),
Column('col3', Integer),
Column('col4', Integer),
Column('col5', Integer),
Column('col6', Integer),
)
# place an index on col3, col4
Index('idx_col34', mytable.c.col3, mytable.c.col4)
declarative ORM 拡張を使う場合、どのようにすればよいのでしょうか?
class A(Base):
__tablename__ = 'table_A'
id = Column(Integer, , primary_key=True)
a = Column(String(32))
b = Column(String(32))
私は列 "a" と "b" のインデックスを希望します。
どのように解決するのですか?
これらは単に
Column
オブジェクトであり、index=Trueフラグは正常に動作します。
class A(Base):
__tablename__ = 'table_A'
id = Column(Integer, primary_key=True)
a = Column(String(32), index=True)
b = Column(String(32), index=True)
複合インデックスが必要な場合は、再度
Table
は通常通りここに存在し、宣言する必要がないだけで、すべてが同じように動作します (宣言的な A.a ラッパーが
Column
として解釈されます)。
class A(Base):
__tablename__ = 'table_A'
id = Column(Integer, primary_key=True)
a = Column(String(32))
b = Column(String(32))
Index('my_index', A.a, A.b)
0.7では
Index
の中に入れることができます。
Table
の引数にも使えます。宣言的な場合は
__table_args__
:
class A(Base):
__tablename__ = 'table_A'
id = Column(Integer, primary_key=True)
a = Column(String(32))
b = Column(String(32))
__table_args__ = (Index('my_index', "a", "b"), )
関連
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] virtualenvのどこにカスタムコードを置くか?
-
[解決済み] re.sub置換パターンにおけるキャプチャグループの後方参照への対応
-
[解決済み] 乱数の行列を作成する簡単な方法
-
[解決済み] ne__は__eq__の否定として実装されるべきか?
-
[解決済み] 2つのデータフレームをマージしようとすると、ValueErrorが発生します。
-
[解決済み] Pandasがラベルで選択すると、Seriesを返す場合とDataFrameを返す場合があります。
-
[解決済み] pandas DataFrameへのメタ情報/メタデータの追加
-
[解決済み] PythonによるCURLの代替
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Celeryでタスクのステータスを確認するには?
-
[解決済み] PythonでSelenium WebDriverを使用してテキストを取得する方法
-
[解決済み] Pythonでzip(*[iter(s)]*n)はどのように動作するのですか?
-
[解決済み] IPythonの終了確認を無効にする
-
[解決済み] TypeError: can't multiply sequence by non-int of type 'float'」と表示されるのはなぜですか?
-
[解決済み] Google App EngineのためのFlaskとwebapp2の比較
-
[解決済み] 乱数の行列を作成する簡単な方法
-
[解決済み] Pythonで文字列のb-プレフィックスを取り除くには?