为什么我的 SQLite 自动增量查询不起作用?

扎眼的阳光 python 257

原文标题Why is my SQLite Autoincrement query not working?

我一般是 SQLite 和 SQL 的新手,最近我一直在尝试使用自动增量函数,我在代码中做错了,因为自动增量根本没有填充列(只需返回“没有任何”)。

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,但没有一个解释足够透彻并解释了如何使用它。

任何帮助将非常感激。

编辑:我刚刚尝试使用与此相同的技术制作一个假人并且它有效,所以它一定是上面代码中的某个地方的错字。

这是确实有效的假人的完整代码:

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

所以我的猜测是这是一个错字,如果事实证明是这样,我将关闭这篇文章

原文链接:https://stackoverflow.com//questions/71918745/why-is-my-sqlite-autoincrement-query-not-working

回复

我来回复
  • Gonzalo Odiard的头像
    Gonzalo Odiard 评论

    这对我有用:

    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)]
    
    2年前 0条评论