2013-04-30 147 views
0

我在寫一個python腳本,它會將數據庫重置爲初始狀態(每個表中的某些硬編碼條目)。數據庫由多個帶有主鍵和外鍵的表組成。刪除所有表中的條目

每次運行腳本時,都應該刪除所有表中的所有舊條目,重置主鍵計數器並插入樣本條目。

目前,我試圖做到這一點是這樣的:

# Delete all the entries from the tables 
cursor.execute("DELETE FROM table1") 
cursor.execute("DELETE FROM table2") 
cursor.execute("DELETE FROM table3") 

# Reset the primary key counter and insert sample entries 
cursor.execute("ALTER TABLE table1 AUTO_INCREMENT = 1") 
cursor.execute("INSERT INTO table1(username, password) VALUES('user01', '123')") 

cursor.execute("ALTER TABLE table2 AUTO_INCREMENT = 1") 
cursor.execute("INSERT INTO table2(column1, column2) VALUES('column1_data', 'column2_data')") 

這不是工作,由於外鍵在某些表中存在(它不會讓我刪除它們)。

我生成使用models.py腳本表(我也使用Django),所以我想我可以解決這個問題的方式如下:

  1. 編程刪除的數據庫,並創建一個新的具有相同命名
  2. 呼叫models.py腳本生成使用我寫

腳本

  • 插入樣本數據在db空表這是一個很好的解決方案還是我俯瞰someth ING?

  • +1

    如果你的意思是這樣的:'DROP DATABASE mydb; CREATE DATABASE mydb;'然後'./manage.py syncdb',那麼這可能是最簡單的。 – Aya 2013-04-30 16:04:18

    回答

    0

    我在存檔內容後每月使用腳本來清除事務表。

    嘗試使用'truncate'命令,即。

    truncate table [tablename];

    它自動重置主鍵的計數器(自動遞增)。 然後使用您的插入語句來填充基本信息。

    此外,這保留了所有的表基地設置(鍵,索引,)。