Python Sqlite3-数据被覆盖



当我试图将数据插入数据库时,就像它只是覆盖整个文件或没有正确保存一样。我对这个脚本的想法是,如果我多次运行它,它会输出以下内容:

(1, 126)
(2, 127)
(3, 126)
(4, 127)

我现在还知道,如果我不在脚本中创建表,它会给我一个错误,即表不存在,即使表是在上次运行脚本时创建的。

import sqlite3
# Connecting to the database file
conn = sqlite3.connect("MyDB.db")
c = conn.cursor()
# Check if table exists
c.execute("DROP TABLE IF EXISTS t1")

# Create table
c.execute('''CREATE TABLE t1(
             a INTEGER PRIMARY KEY,
             b INTEGER);''')
# Insert value
c.execute('''INSERT INTO t1 VALUES(NULL,126);''')
c.execute('''INSERT INTO t1 VALUES(NULL,127);''')
# Save changes
conn.commit()
for row in c.execute('SELECT * FROM t1'):
        print(row)
# Output:
# (1, 126)
# (2, 127)
conn.close()

我真的很想这样做,因为我正在做一个学校项目,我的产品是制作一个功能性商店,在那里你可以添加、删除产品,并按添加日期排序。

两个问题:

  1. 您正在删除该表(如果存在),这将始终删除该表:

    c.execute("DROP TABLE IF EXISTS t1")
    
  2. 您正在删除后重新创建表:

    c.execute('''CREATE TABLE t1(
         a INTEGER PRIMARY KEY,
         b INTEGER);''')
    

您可以对上面的代码进行注释,然后重新运行脚本以获得所需的输出。但是,在最终版本中,请确保在写入之前检查数据库和表是否存在。

最新更新