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()
Code: Select all
hashlib.md5(input_string.encode('utf-8')).digest()
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?
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.