ID-Zähler nach dem Löschen der Tabelle zurücksetzen ()
Zu Testzwecken lösche ich jede Tabelle, bevor ich Code ausführe.
for table in reversed(db.metadata.sorted_tables):
engine.execute(table.delete())
do_stuff()
Die neuen Daten sind jedochid
Werte beginnen dort, wo die vorherigenid
hat aufgehört:
Erste Iteration:
id | value
-----+---------
1 | hi
2 | there
Zweite Iteration (Tabelle löschen, neue Daten einfügen):
id | value
-----+---------
3 | good
4 | day
Gibt es eine Möglichkeit das zurückzusetzen?id
zählen wenn ich die tabelle lösche?
EDIT: Scheint ich habe es kaputt gemacht, der Tisch ist jetzt überhaupt nicht abgeräumt
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')
Die Tabelle wird noch zu (using) hinzugefügtdb.session.add_all()
unddb.session.commit()
). Jedoch,clear()
tut nichts. Wenn ich mich als der anmeldepostgres
Benutzer interminal
und direkt ausführenTRUNCATE TABLE myTable RESTART IDENTITY CASCADE
, Es klappt.
table.name
gibt die richtigen Namen an. Das lässt mich glauben, dass etwas nicht stimmtdb.engine.execute()
, aber das macht da nicht viel sinndb.session.add_all()
funktioniert