2017-12-15 12 views
0

SQLAlchemyを使用してテーブルに行を挿入しています。テーブルはこのように定義されていますSQLAlchemyクエリのIDがnullの場合

class MyTable(): 
    __table__ = "my_table" 
    id = Column(BigInteger, primary_key=True) 
    stuff1 = Column(Numeric) 

はここで錬金術ラインです:

MyTable(stuff1=100) 

は、ここでそれが生成するクエリです:

INSERT INTO my_table (id, stuff1) VALUES (null, 100) 

、私はこのエラーを取得:

IntegrityError('(psycopg2.IntegrityError) null value in column \"id\" violates not-null constraint 

idが主キーであるため、私はそれが自動的に生成されることを期待した。しかし、私は手動でそれにシーケンスを適用する必要があるようだ?私は間違って何をしていますか?

+0

私のために働きます。 [mcve]を入力してください。 –

答えて

1

これは私に起こりました。通常は、sqlalchemyを使用してテーブルを作成したり、sqlalchemyのテーブル定義を不完全/間違っていました。 '存在しない場合はテーブルを作成する'設定がある場合、変更はポストグルのテーブル定義と同期されません。私は、サーバーのデフォルトがプライマリキーのために設定されていないかどうかを確認するために、psqlコマンドラインツールを使ってテーブル定義をチェックアウトします。これは、シリアルデータ型であるか、外部シーケンスを使用する必要があります。

+0

主キー列のコンストラクタでSEQUENCE引数が必要でした – dopatraman

関連する問題