为什么我的 SQLite 自动增量查询不起作用?
Why is my SQLite Autoincrement query not working?
总的来说,我是 SQLite 和 SQL 的新手,最近我一直在尝试使用自动增量功能,我在代码中做错了,因为自动增量根本不填充列(只是 returns “None”)。
import sqlite3
make_table = "CREATE TABLE IF NOT EXISTS products (product_ID INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(50), price int);"
c.execute(make_table)
insert_apple = "INSERT INTO products (name, price) VALUES ('apple', 2);"
c.execute(insert_apple)
insert_orange = "INSERT INTO products (name, price) VALUES ('orange', 2);"
c.execute(insert_orange)
insert_banana = "INSERT INTO products (name, price) VALUES ('banana', 3);"
c.execute(insert_banana)
select_products = "SELECT * FROM products;"
c.execute(select_products)
print(c.fetchall())
我已经查看了一般使用AUTOINCREMENT的方法,但错误不断重复,我找不到我的错误,也没有找到任何相同问题的问题。我看到有人提到 ROWID,但 none 的解释感觉足够透彻,并解释了如何使用它。
如有任何帮助,我们将不胜感激。
编辑:我刚刚尝试使用与此相同的技术制作一个假人并且它起作用了,所以它一定是上面代码中某处的错字。
这是有效的假人的完整代码:
import sqlite3
try:
connection = sqlite3.connect('SQLite_Python.db')
c = connection.cursor()
print("Database created and Successfully Connected to SQLite")
create_table = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(50), age INTEGER);"
insert_data1 = "INSERT INTO users (name, age) VALUES ('John', 25);"
insert_data2 = "INSERT INTO users (name, age) VALUES ('Jessica', 27);"
c.execute(create_table)
c.execute(insert_data2)
c.execute(insert_data1)
except sqlite3.Error as error:
print("Error while connecting to sqlite", error)
select_data = "SELECT * FROM users;"
c.execute(select_data)
print(c.fetchall())
所以我猜这是一个打字错误,如果结果是这样,我将关闭此 post
这对我有用:
import sqlite3
con = sqlite3.connect('test')
with con:
c = con.cursor()
make_table = "CREATE TABLE IF NOT EXISTS products (product_ID INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(50), price int);"
c.execute(make_table)
insert_apple = "INSERT INTO products (name, price) VALUES ('apple', 2);"
c.execute(insert_apple)
insert_orange = "INSERT INTO products (name, price) VALUES ('orange', 2);"
c.execute(insert_orange)
insert_banana = "INSERT INTO products (name, price) VALUES ('banana', 3);"
c.execute(insert_banana)
select_products = "SELECT * FROM products;"
c.execute(select_products)
print(c.fetchall())
结果:
[(1, 'apple', 2), (2, 'orange', 2), (3, 'banana', 3)]
总的来说,我是 SQLite 和 SQL 的新手,最近我一直在尝试使用自动增量功能,我在代码中做错了,因为自动增量根本不填充列(只是 returns “None”)。
import sqlite3
make_table = "CREATE TABLE IF NOT EXISTS products (product_ID INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(50), price int);"
c.execute(make_table)
insert_apple = "INSERT INTO products (name, price) VALUES ('apple', 2);"
c.execute(insert_apple)
insert_orange = "INSERT INTO products (name, price) VALUES ('orange', 2);"
c.execute(insert_orange)
insert_banana = "INSERT INTO products (name, price) VALUES ('banana', 3);"
c.execute(insert_banana)
select_products = "SELECT * FROM products;"
c.execute(select_products)
print(c.fetchall())
我已经查看了一般使用AUTOINCREMENT的方法,但错误不断重复,我找不到我的错误,也没有找到任何相同问题的问题。我看到有人提到 ROWID,但 none 的解释感觉足够透彻,并解释了如何使用它。
如有任何帮助,我们将不胜感激。
编辑:我刚刚尝试使用与此相同的技术制作一个假人并且它起作用了,所以它一定是上面代码中某处的错字。
这是有效的假人的完整代码:
import sqlite3
try:
connection = sqlite3.connect('SQLite_Python.db')
c = connection.cursor()
print("Database created and Successfully Connected to SQLite")
create_table = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(50), age INTEGER);"
insert_data1 = "INSERT INTO users (name, age) VALUES ('John', 25);"
insert_data2 = "INSERT INTO users (name, age) VALUES ('Jessica', 27);"
c.execute(create_table)
c.execute(insert_data2)
c.execute(insert_data1)
except sqlite3.Error as error:
print("Error while connecting to sqlite", error)
select_data = "SELECT * FROM users;"
c.execute(select_data)
print(c.fetchall())
所以我猜这是一个打字错误,如果结果是这样,我将关闭此 post
这对我有用:
import sqlite3
con = sqlite3.connect('test')
with con:
c = con.cursor()
make_table = "CREATE TABLE IF NOT EXISTS products (product_ID INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(50), price int);"
c.execute(make_table)
insert_apple = "INSERT INTO products (name, price) VALUES ('apple', 2);"
c.execute(insert_apple)
insert_orange = "INSERT INTO products (name, price) VALUES ('orange', 2);"
c.execute(insert_orange)
insert_banana = "INSERT INTO products (name, price) VALUES ('banana', 3);"
c.execute(insert_banana)
select_products = "SELECT * FROM products;"
c.execute(select_products)
print(c.fetchall())
结果:
[(1, 'apple', 2), (2, 'orange', 2), (3, 'banana', 3)]