从所有表中删除条目

时间:2013-04-30 15:59:49

标签: python mysql pymysql

我正在编写一个python脚本,将数据库重置为初始状态(每个表中的一些硬编码条目)。 db包含多个具有主键和外键的表。

每次运行脚本时,都应删除所有表中的所有旧条目,重置主键计数器并插入样本条目。

目前我正在尝试这样做:

# 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
  3. 中生成空表
  4. 使用我编写的脚本
  5. 插入样本数据

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

1 个答案:

答案 0 :(得分:0)

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

尝试使用'truncate'命令,即。

截断表[tablename];

自动重置主键的计数器(自动增量)。 然后使用insert语句填充基本信息。

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