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

コンテンツをアーカイブした後、毎月スクリプトを使用してトランザクション テーブルをパージします。

「truncate」コマンドを使用してみてください。

テーブル [テーブル名] を切り捨てます。

主キーのカウンター (自動インクリメント) を自動的にリセットします。次に、insert ステートメントを使用して基本情報を入力します。

また、これにより、テーブルの基本設定 (キー、インデックスなど) がすべて保持されます。

于 2013-05-02T20:45:51.777 に答える