2017-01-30 58 views
0

創建一個簡單的數據庫,並用一個id有行,所以我可以選擇稍後行值:蟒蛇sqlite的創建ID INTEGER PRIMARY KEY AUTOINCREMENT

conn = sqlite3.connect("APIlan.db") 
c = conn.cursor() 
c.execute('''CREATE TABLE IF NOT EXISTS ENERGYLOG (id INTEGER PRIMARY KEY AUTOINCREMENT, totalenergy REAL)''') 
c.execute("INSERT INTO ENERGYLOG VALUES (?);", (total_energy,)) 
conn.commit()  
conn.close() 

錯誤sqlite3.OperationalError: table ENERGYLOG has 2 columns but 1 values were supplied

第二個嘗試:

conn = sqlite3.connect("APIlan.db") 
c = conn.cursor() 
c.execute('''CREATE TABLE IF NOT EXISTS ENERGYLOG (id INTEGER PRIMARY KEY AUTOINCREMENT, totalenergy REAL)''') 
c.execute("INSERT INTO ENERGYLOG VALUES (?,?);", (NULL,total_energy,)) 
conn.commit()  
conn.close() 

錯誤NameError: name 'NULL' is not defined

Without supp說謊的價值,我怎麼把它放到桌子上?謝謝。

+0

NULL - >無... –

回答

2

我有兩個解決方案。

貴國的第一次嘗試,如果你只需要插入您選擇的列,你可以按照這個語法:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN); 

的話,你可以這樣寫:

c.execute("INSERT INTO ENERGYLOG (totalenergy) VALUES (?);", (total_energy,)) 

2。你的第二次嘗試,如果你想插入所有列,可以取代「NULL」到「無」:

c.execute("INSERT INTO ENERGYLOG VALUES (?, ?);", (None, total_energy)) 

因爲Python不千牛ow'NULL'。

在SQL中,我們使用'NULL',而在Python中我們使用'None'。

希望它能幫助你!

2

你應該明確列出要插入到哪些列:

c.execute("INSERT INTO ENERGYLOG (totalenergy) VALUES (?);", (total_energy,)) 

至於參數化NULL,應指定None作爲參數值:

c.execute("INSERT INTO ENERGYLOG VALUES (?, ?);", (None, total_energy)) 

或者,使用NULL和單個參數:

c.execute("INSERT INTO ENERGYLOG VALUES (NULL, ?);", (total_energy,))