2013-04-30 104 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];

    它自动重置主键的计数器(自动递增)。 然后使用您的插入语句来填充基本信息。

    此外,这保留了所有的表基地设置(键,索引,)。