Was sollte der bevorzugte Datentyp für Primärschlüssel Colum sein, wenn in der Datenbank (MSSQL) ist es definiert als Numeric (18,0)

Ich bin vor Probleme mit der Definition der Primärschlüssel-Spalte der Tabelle als Numeric (18,0). Ich bin die Verbindung zu einem MSSQL und in der Datenbank alle Tabellen sind definiert als Numeric (18,0) für Primärschlüssel. Also, um mit dem Datenbanktabellenschema übereinzustimmen, habe ich die Sqlalchemy-Tabellen als Numeric (18,0) aktualisiert, aber ich bin mit Problemen konfrontiert, wenn die Tabelle einen Insert-Trigger hat. Z.B.

sometable = Table("sometable", metadata, Column("sometable_id",Numeric(18,0), primary_key=True)) 

Also bin ich durch die docs gegangen und gefunden, dass ich mich von implizit_returning = False drehen muss und wahlweise das primäre_-Auto automatisch inkrementieren muss, also habe ich mein Schema gewechselt.

 sometable = Table("sometable", metadata, Column("sometable_id", Numeric(18,0), autoincrement=True,primary_key=True), implicit_returning=False) 

Aber es wirft immer noch den folgenden Fehler {FlushError: Instance hat einen NULL-Identitätsschlüssel. Wenn dies ein automatisch generierter Wert ist, überprüfen Sie, ob die Datenbanktabelle die Erzeugung neuer Primärschlüsselwerte zulässt und dass das zugeordnete Spaltenobjekt so konfiguriert ist, dass diese generierten Werte erwartet werden. Stellen Sie sicher, dass diese Flush () nicht zu einer ungeeigneten Zeit, wie z. B. innerhalb eines load () – Ereignisses auftritt. }

Nach dem Problem habe ich festgestellt, dass Autoincrement das Problem ist, ging ich voran und änderte mein Tabellenschema, um Datentyp BigInteger für Primärschlüssel zu haben.

 sometable = Table("sometable", metadata, Column("sometable_id", BigInteger, autoincrement=True,primary_key=True), implicit_returning=False) 

Und es funktionierte gut für alle Fälle einschließlich Insert-Trigger auch. Also meine Frage ist, was sollte der bevorzugte Datentyp für Primärschlüssel in meinem Szenario sein. Mache ich weiterhin mit BigInteger. Brauchen Sie Vorschläge Jungs.

  • Flask-Admin: Wie man das Modell mit on_model_change ändert?
  • Nicht funktionierendes Beispiel mit "passiv-deletes" -Richtlinie in sqlalchemy doc
  • SQLAlchemy - baut Abfragefilter dynamisch aus dict
  • Wie kann ich Spaltendatentypen im SQLAlchemy ORM verifizieren?
  • Python: SQLAlchemy ImportError: Kein Modul namens pysqlite2
  • Rekursives Problem
  • Wie man Autoincrement-Werte für eine Spalte nach dem Hochladen eines Pandas-Dataframs zu einer MySQL-Datenbank erhält
  • Warum gibt SQLAlchemy create_engine mit charset = utf8 return python type <str> und nicht Typ <unicode>?
  • Wie kann ich column_properties erstellen, die eine groupby verwenden?
  • Wie kann ich die Ergebnisse eines wtformusing Jinja mit einem Python / Flask-Setup korrekt einreichen
  • Ändern von Daten als Teil eines alembic-Upgrades
  • Python ist die beste Programmiersprache der Welt.