ORMを使用してテーブルを作成する方法主キーのない宣言的クラス? 列を作成しなかった場合、開始に失敗しましたprimary_key = True
。SQLAlchemy宣言型:プライマリキーのないテーブル?
答えて
SQLAlchemyコアは、主キーが欠落していると不平を言っていないので、Table(…)
でそのようなテーブルを作成することができます。しかし、ORMはオブジェクトに対応する行を識別する方法を必要とするため、ORMで主キーなしでテーブルを使用することはできません。
なぜこのインデックスを後で追加する必要がありますか?おそらく他の方法で解決することができるいくつかの問題を解決するための実際の要件か試行ですか?コンポジットプライマリキーが必要な場合は、primary_key=True
引数を複数のColumn
に設定するか、PrimaryKeyConstraint(…)
を__table_args__
に指定して定義することができます。
私はマルチカラムインデックスを作成しようとしています。インデックスがBTREE(私のデータベースはMySQL)を使って構築されなければならないことを明示的に宣言できれば素晴らしいだろう。どんな解決策ですか? – Determinant
ほとんどのデータベース(MySQLを含む)はデフォルトでB-Treeを使用していますので、複合インデックスに参加するすべての 'Column'sに' primary_key = True'を指定してください。明示的なBツリー(または他のタイプ)仕様は 'Index(...) 'でサポートされています。 PostgreSQL用ですが、MySQL用ではなく、 'PrimaryKeyConstraint'ではありません。 SQLAlchemyの機能が欠けているように見えます。 –
"primary_key"引数の "primary"のリストをmapper()に宣言的な '__mapper_args__ = {" primary_key ":(col1、col2)}}' – zzzeek
- 1. Data.Map型宣言
私は、なぜあなたはそのようなことをしたいと思いますか? –
@JonathanOng後でインデックスを追加したいので、mysqlがこのようなことをすることができるようです。 – Determinant