2017-10-12 1 views
1

데이터베이스에 연결하기 위해 내 django 프로젝트에서 pymssql을 사용하고 있습니다. insert() 메서드를 사용하여 execute() 메서드를 사용하려고합니다.pymssql INSERT가 자동 증가 ID가 아닙니다

Cannot insert the value NULL into column 'ID', table ITEMS

ID 열에는 기본 키 등이 이해로 SQL 자체로 작성해야합니다
그러나 나는이 오류가 발생합니다. 여기 내 삽입 명령입니다

bill_id = execute(""" 
     INSERT INTO ITEMS(COlUMN1,COlUMN2, COlUMN3,COlUMN4,COlUMN5) 
     VALUES (%d, %d, %d, %d, %d); 
     """, (1713, 6, 929, 1184, 25)) 

이러한 열 중 어느 것도 ID 없습니다. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?

+1

왜 데이터베이스와 상호 작용하는 장고 모델을 사용하지 않는? – mhawke

+0

@mhawke 나는 그것을 할 수 없다. 저는 다소 큰 프로젝트를 진행하고 있으며 제 전화가 아닙니다. –

+1

Django에 의해 테이블이 생성되지 않았다면 ID 필드에'AUTO_INCREMENT'가 설정되지 않았을 수 있습니다. ID를 지정하거나 열이 자동으로 증가하도록 변경해야합니다. – Alasdair

답변

3

id 열이 자동 증가 키 열이 아닌 경우 작동하지 않습니다. create table 문에서 SQL의 열을 정의하면 자동 증가 열이 아닙니다. 정의해야합니다. 아마 당신은 id 컬럼의 최대 값을 얻기 위해 쿼리를 만들어야합니다. 초에서 값을 증가시키고 insert 문에 기본 열을 추가 할 수 있습니다.

django 메타 데이터 api를 사용하는 링크입니다.

https://docs.djangoproject.com/en/1.9/ref/models/meta/#migrating-from-the-old-api

+0

고마워, 그게 내가 결국 한 짓이야,하지만 난 여전히 ID가 SQL에 의해 설정되지 않는 이유를 알아낼 수 없습니다. 열은 자동 증가이므로 자체적으로 증가해야합니다. –

+0

좋아, 그것은 MySQL 데이터베이스입니다. – michaeldbjava

+0

테이블의 구조를 보려면 다음을 시도하십시오. https://dev.mysql.com/doc/refman/5.7/en/show-columns.html – michaeldbjava