Python Sqlite3 - 数据被覆盖

时间:2015-03-02 07:13:55

标签: python sqlite

当我尝试将数据插入我的数据库时,它只是简单地覆盖整个文件或不正确保存它。 我对这个脚本的想法是,如果我多次运行它会输出:

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

我现在也知道,如果我没有在脚本中创建表格,它会给我一个错误,即表格不存在,即使表格是在上次运行脚本时创建的。“ / p>

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 个答案:

答案 0 :(得分:2)

两个问题:

  1. 如果存在则丢弃表格,这将始终删除表格:

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

    c.execute('''CREATE TABLE t1(
         a INTEGER PRIMARY KEY,
         b INTEGER);''')
    
  3. 您可以对上面的代码进行评论并重新运行脚本以获得所需的输出。但是,在最终版本中,确保在写入之前检查db和table是否存在。