2015-03-02 172 views
0

當我嘗試向我的數據庫插入數據時,就像它只是簡單地覆蓋整個文件或者不能正確保存它。 我對這個劇本的想法是,如果我跑了多次,它會輸出這樣的: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() 

我真的希望這工作,因爲我工作的一所學校項目中,我的產品是做一個功能商店,你可以加入他們最新添加,刪除產品,對它們進行排序。

回答

2

兩個問題:

  1. 如果存在您要刪除的表,這總是會刪除該表:

    c.execute("DROP TABLE IF EXISTS t1") 
    
  2. 您要重新創建表下探後:

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

Yo你可以評論上面的代碼並重新運行你的腳本來獲得你想要的輸出。但是,在最終版本中,確保在寫入數據之前檢查db和table是否存在。

+0

那麼有道理,但如果表不存在,我該如何創建一個表? – RasmusGP 2015-03-02 07:31:33

+1

我想你只需要將'CREATE TABLE'改成'CREATE TABLE IF NOT EXISTS'。 – user3 2015-03-02 07:43:27