テーブル削除()後にID数をリセットする
-
21-12-2019 - |
質問
テスト目的で、コードを実行する前にすべてのテーブルをクリア(削除)します。
for table in reversed(db.metadata.sorted_tables):
engine.execute(table.delete())
do_stuff()
.
しかしながら、新しいデータのid
値は、前のid
が残ってからの開始:
最初の反復:
id | value
-----+---------
1 | hi
2 | there
.
2回目の反復(削除、新しいデータの挿入):
id | value
-----+---------
3 | good
4 | day
.
テーブルを削除すると、id
カウントをリセットする方法はありますか?
編集:私が壊したようです、表は今や現在全然消去されません
config.py
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:myPassword@localhost/myDatabase'
app.py
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
models.py
from app import app, db
def clear():
for table in reversed(db.metadata.sorted_tables):
db.engine.execute('TRUNCATE TABLE ' + table.name + ' RESTART IDENTITY CASCADE')
.
テーブルはまだ追加されています(db.session.add_all()
とdb.session.commit()
を使用)。ただし、clear()
は何もしません。postgres
でterminal
ユーザーとしてログインし、TRUNCATE TABLE myTable RESTART IDENTITY CASCADE
を直接実行すると機能します。
table.name
は正しい名前を与えます。それは私がdb.engine.execute()
に何か問題があると信じるようにつながりますが、それはdb.session.add_all()
が機能して以来もっと意味がありません
解決
TRUNCATE TABLE MyTable RESTART IDENTITY;
を呼び出すのではなく、ループ内のすべてのテーブルの呼び出しtable.delete()
- これは自動増分シーケンスをリセットする必要があります。
所属していません StackOverflow