Python Sqlite3-数据被覆盖
当我试图将数据插入数据库时,就好像它只是覆盖了整个文件,或者没有正确保存。 我对这个脚本的想法是,如果我多次运行它,它将输出以下内容:Python Sqlite3-数据被覆盖,python,sqlite,Python,Sqlite,当我试图将数据插入数据库时,就好像它只是覆盖了整个文件,或者没有正确保存。 我对这个脚本的想法是,如果我多次运行它,它将输出以下内容: (1, 126) (2, 127) (3, 126) (4, 127) 我现在还知道,如果我没有在脚本中创建表,它会给我一个错误,即表不存在,即使表是在上次运行脚本时创建的 import sqlite3 # Connecting to the database file conn = sqlite3.connect("MyDB.db") c = conn.c
(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()
我真的很想这样做,因为我正在学校的一个项目中工作,我的产品是建立一个功能商店,在那里你可以添加、删除产品,并按添加日期对它们进行排序。两个问题:
c.execute("DROP TABLE IF EXISTS t1")
c.execute('''CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER);''')
您可以对上述代码进行注释,然后重新运行脚本以获得所需的输出。但是,在最终版本中,确保在写入数据库之前检查数据库和表是否存在。这是有道理的,但是如果表不存在,我如何创建表?我认为您只需将
创建表更改为创建表(如果不存在)
。