2017-10-12 142 views
1

我在我的django項目中使用pymssql來連接到數據庫。 我想使用execute()方法來做一個插入。
但是我得到這個錯誤:pymssql INSERT不會自動增加ID

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

ID列是主鍵,所以應該由SQL本身作爲我的理解來填補。 這裏是我的INSERT命令:

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

,沒有這些列是ID。 任何人都可以告訴我做錯了什麼?

+1

爲什麼不使用Django模型與數據庫進行交互? – mhawke

+0

@mhawke我不能那樣做。我正在做一個相當大的項目,這不是我的呼叫。 –

+1

如果表格不是由Django創建的,那麼ID字段可能沒有設置「AUTO_INCREMENT」。您需要指定ID,或者更改列以使其自動遞增。 – Alasdair

回答

3

如果id列不是自動增量鍵列,它將不起作用。如果您在create table語句中使用SQL定義了一列,則它不會自動成爲自動增量列。你必須定義它。也許你應該首先查詢獲得id列的最大值。在第二步,您可以增加值並將主列添加到插入語句中。

我發現此鏈接使用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