Welche Python- oder SQL Alchemy-Datentypen sollten für die Schnittstelle zu Datenbanken verwendet werden, die Hash-WertePython

Python-Programme
Guest
 Welche Python- oder SQL Alchemy-Datentypen sollten für die Schnittstelle zu Datenbanken verwendet werden, die Hash-Werte

Post by Guest »

SQL Alchemy unterstützt mehrere Möglichkeiten zur Angabe von Datentypen für SQL-Datenbankspalten. Wenn reguläre Python-Datentypen verwendet werden, versucht SQL Alchemy, diese sinnvoll auf Datentypen abzubilden, die von der verbundenen Datenbank unterstützt werden.
Es besteht auch die Möglichkeit, genauer definierte Typen zu verwenden, die von bereitgestellt werden das SQL Alchemy-Framework. Diese Typen stimmen eher mit den Typen überein, die von bestimmten Datenbanken unterstützt werden. (Zum Beispiel Postgres, MySQL, sqlite3, ...)
Diese Frage und Antwort scheint darauf hinzudeuten, dass der UUID-Typ zur Darstellung von MD5-Hashwerten verwendet werden sollte.
Das erscheint etwas seltsam, da der Python-Code zum Generieren eines MD5-Hashs normalerweise etwa so aussehen würde

Code: Select all

hashlib.md5(input_string.encode('utf-8')).hexdigest()
oder dies

Code: Select all

hashlib.md5(input_string.encode('utf-8')).digest()
abhängig davon, ob der Hash-Wert als str oder als binärer String (

Code: Select all

bytes
).
Keines davon ist genau eine UUID, die str-Form scheint jedoch implizit in und aus einer UUID konvertierbar zu sein Typ.
  • Ist UUID der richtige zu verwendende Datentyp?
  • Welcher Typ sollte verwendet werden? ein SHA-256-Hash?
Ich habe das Gefühl, dass in beiden Fällen ein binärer Datentyp mit fester Breite besser wäre. Dies scheint jedoch von SQL Alchemy nicht unterstützt zu werden, zumindest nicht in Kombination mit Postgres.
Dies liegt daran, dass der SQL Alchemy-Datentyp LargeBinary bytea zugeordnet wird Postgres-Datentyp. Dies ist ein Datentyp mit variabler Länge und er kann nicht wie varchar auf eine feste Breite gezwungen werden.
Ich habe einige Tests zwischen UUID< durchgeführt /code> und str und ich habe festgestellt, dass das Einfügen von Daten bei Verwendung von UUID etwas schneller war, was möglicherweise nicht überraschend ist, da die Länge fest und nicht variabel ist. Allerdings war der Unterschied gering. (233 vs. 250 eingefügte Nachrichten pro Sekunde.)
Ich beabsichtige, weitere Tests mit dem Datentyp bytes durchzuführen. Meine ersten Ergebnisse deuten darauf hin, dass es die gleiche Leistung erbringt wie str.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post