python sqlite创建id整数主键自动递增

python sqlite创建id整数主键自动递增,python,sqlite,Python,Sqlite,创建一个简单的数据库,并使行具有id,以便我以后可以选择行值: 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

创建一个简单的数据库,并使行具有id,以便我以后可以选择行值:

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:表ENERGYLOG有2列,但提供了1个值

第二次尝试:

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()
错误名称错误:未定义名称“NULL”


如果不提供id的值,如何将其放入表中?谢谢。

您应该明确列出要插入的列:

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,))

您应该明确列出要插入的列:

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,))
我有两个解决办法

1.第一次尝试时,如果只想插入所选的列,可以按照以下语法操作:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);
所以,你可以这样写:

c.execute("INSERT INTO ENERGYLOG (totalenergy) VALUES (?);", (total_energy,))
2.第二次尝试,如果要插入所有列,可以将“NULL”替换为“None”:

c.execute("INSERT INTO ENERGYLOG VALUES (?, ?);", (None, total_energy))
因为python不知道“NULL”

在SQL中使用“NULL”,在python中使用“None”

希望它能帮助你

我有两种解决方案

1.第一次尝试时,如果只想插入所选的列,可以按照以下语法操作:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);
所以,你可以这样写:

c.execute("INSERT INTO ENERGYLOG (totalenergy) VALUES (?);", (total_energy,))
2.第二次尝试,如果要插入所有列,可以将“NULL”替换为“None”:

c.execute("INSERT INTO ENERGYLOG VALUES (?, ?);", (None, total_energy))
因为python不知道“NULL”

在SQL中使用“NULL”,在python中使用“None”


希望它能帮助你

空->无…空->无。。。