Python Sqlite3 - 数据被覆盖
问题描述:
当我尝试向我的数据库插入数据时,就像它只是简单地覆盖整个文件或者不能正确保存它。 我对这个剧本的想法是,如果我跑了多次,它会输出这样的: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()
我真的希望这工作,因为我工作的一所学校项目中,我的产品是做一个功能商店,你可以加入他们最新添加,删除产品,对它们进行排序。
答
两个问题:
-
如果存在您要删除的表,这总是会删除该表:
c.execute("DROP TABLE IF EXISTS t1")
-
您要重新创建表下探后:
c.execute('''CREATE TABLE t1( a INTEGER PRIMARY KEY, b INTEGER);''')
Yo你可以评论上面的代码并重新运行你的脚本来获得你想要的输出。但是,在最终版本中,确保在写入数据之前检查db和table是否存在。
那么有道理,但如果表不存在,我该如何创建一个表? – RasmusGP 2015-03-02 07:31:33
我想你只需要将'CREATE TABLE'改成'CREATE TABLE IF NOT EXISTS'。 – user3 2015-03-02 07:43:27