【问题标题】:Removing entries from all tables从所有表中删除条目
【发布时间】:2013-04-24 15:02:11
【问题描述】:

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

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

【问题讨论】:

  • 如果你的意思是:DROP DATABASE mydb; CREATE DATABASE mydb; 然后./manage.py syncdb,那么这可能是最简单的。

标签: python mysql pymysql


【解决方案1】:

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

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

截断表[表名];

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2018-07-20
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多