2017-12-15 4 views
0

SQLAlchemy를 사용하여 테이블에 행을 삽입하고 있습니다. 여기 SQLAlchemy 쿼리에서 ID를 null로 표시합니다.

MyTable(stuff1=100) 

가 생성하는 쿼리 : 여기
class MyTable(): 
    __table__ = "my_table" 
    id = Column(BigInteger, primary_key=True) 
    stuff1 = Column(Numeric) 

는 연금술 라인의 표는 다음과 같이 정의된다

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