Arbeitet BIGINT automatisch inkrementieren für SQLAlchemy mit SQLite?

7

Ich versuche, eine Tabelle mit SQLAlchemy zu deklarieren. Ich möchte einen BIGINT automatisch inkrementierenden Primärschlüssel in die Tabelle aufnehmen. Dies scheint nicht mit SQLite als DB-Backend zu arbeiten. Auf der anderen Seite funktioniert INTEGER automatisch inkrementieren Primärschlüssel funktioniert gut.

Ich habe gelesen, dass sqlite ROWID hat, das ein unterschriebener Bigint ist. Aber gibt es eine Möglichkeit, ein BIGINT Auto-Inkrement-Feld zu haben? Auf diese Weise kann ich Backends austauschen, ohne sich um db-spezifische Probleme kümmern zu müssen (vorausgesetzt, MySQL und Postgres unterstützen Bigint-Autoinkrementierungsfelder).

Danke.

    
Overclocked 16.09.2013, 19:27
quelle

2 Antworten

8

Sqlite erlaubt BIGINT nicht als Primärschlüssel mit Autoinkrement.

Aufgrund der dynamischen Art der SQL-Spaltentypen können Sie jedoch einen Backend-spezifischen Spaltentyp erstellen und% verwenden co_de% type im Fall von INTEGER backend, siehe SQLAlchemy: Wie man den Typ für die Spalte abhängig vom Backend bedingt anwählt .

Ich hoffe, das hilft.

    
alecxe 16.09.2013, 19:39
quelle
11

Für andere, die über Google hierher kommen und nur eine Lösung brauchen, habe ich den folgenden Code geschrieben:

%Vor%

Damit können Sie BIGINT für eine Datenbank und INT für das Ausführen von Komponententests verwenden.

    
honestduane 19.04.2014 21:01
quelle

Tags und Links