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 脚本在数据库中生成空表
  3. 使用我编写的脚本插入示例数据

这是一个好的解决方案还是我忽略了什么?

4

1 回答 1

0

在归档内容后,我每月使用脚本来清除事务表。

尝试使用“截断”命令,即。

截断表[表名];

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

此外,这会保留所有表的基本设置(键、索引、。)。

于 2013-05-02T20:45:51.777 回答