2012-11-28 16 views
7

Ich habe Orm für meine App verwendet, und versuchen Sie nicht, SQL zu verwenden, um SQL-Syntaxfehler zu vermeiden, wenn Sie zwischen verschiedenen DBMS wechseln.SqlAlchemy truncate Tabelle mit ORM

Momentan teste ich mit sqlite und mysql. Ich fand heraus, eine Tabelle löschen wir verwenden können:

db.session.query(models.MyTable).delete()

Leider ist diese Methode nicht wirklich „gestutzt“ der Tisch, weil es nicht das Zählen der Autoinkrement auf 0

nicht zurück Gibt es Wie auch immer, um das echte Abschneiden in SqlAlchemy orm zu tun?

+1

die Notwendigkeit, Sequenzen zurückzusetzen ist verdächtig, warum willst du das? – SingleNegationElimination

+0

Ich möchte das gleiche Verhalten zwischen SQLite und MySQL, weil es scheint, dass für SQLite der Zähler zurückgesetzt wird, während MySQL nicht ist. – w00d

+0

das Zurücksetzen der Sequenz ist mehr ein Fehler der SQL-Sequenzumsetzung, ich betrachte es als einen Fehler! – SingleNegationElimination

Antwort

1

SQLAlchemy delete(...) Methode ist in SQL DELETE FROM Abfrage übersetzt. Diese Abfrage nicht setzt alle AUTO_INCREMENT-Zähler zurück. Um einen Zähler in MySQL zurückgesetzt müssen Sie eine Abfrage wie das laufen:

ALTER TABLE tbl AUTO_INCREMENT = 100; 

Wenn ich nicht zu verkennen, hat es kein Analogon in SQLAlchemy.