2016-04-25 16 views
0

要件:自動インクリメント値を持つ複合キー。テーブルを定義する方法: sqlalchemyコア自動インクリメントユニーク制約の一部である整数列

doc_versions = Table("doc_versions", metadata, 
         Column("id", Integer, primary_key=True), 
         Column("doc_id", Integer,ForeignKey("docs.id")), 
         Column("version_number", Integer, default=select([ 
        func.max(1, 1)])), 
         UniqueConstraint("doc_id","version_number", 
              name="doc_version") 
         ) 

はどのように+ version_numberは、この一意で、次のシーケンスを取るべき複合キーすなわちDOC_IDのバージョン番号を初期化します。私は1.0.8

答えて

0

がここに同様の問題について多くの質問が行われている、と答えは常にこのようなものだったSQLAlchemyのコアを使用したい(なしリンクについては申し訳ありませんが、ちょうど例えば検索「SQLAlchemyのを複合自動インクリメント」):

sqlalchemyは、整数の主キーに対してのみ自動インクリメントを処理できます。

悲しいですが、本当です。しかし、あなたは常にdoc_idversion_numberで注文したテーブルを照会し、最後の行を取得してそれを増分することができます。私は複合キーで同じメソッドを使用しています。