Существует также возможность использования более точно определенных типов, предоставляемых платформа SQL Alchemy. Эти типы более точно соответствуют типам, поддерживаемым конкретными базами данных. (Например, Postgres, MySQL, sqlite3, ...)
Похоже, этот вопрос и ответ предполагают, что тип UUID следует использовать для представления хеш-значений MD5.
Это кажется немного странным, поскольку для генерации хеша md5 обычно код Python выглядит примерно так
Код: Выделить всё
hashlib.md5(input_string.encode('utf-8')).hexdigest()
Код: Выделить всё
hashlib.md5(input_string.encode('utf-8')).digest()
Код: Выделить всё
bytes
Ни один из них не является UUID в точности, однако форма str, по-видимому, неявно преобразуется в UUID и из UUID > тип.
- Является ли UUID правильным типом данных?
- Какой тип следует использовать для хэш SHA-256?
Это связано с тем, что тип данных LargeBinary SQL Alchemy сопоставляется с bytea Тип данных Postgres. Это тип данных переменной длины, и его невозможно заставить иметь фиксированную ширину, как это возможно с varchar.
Я провел некоторое тестирование между UUID< /code> и str, и я обнаружил, что вставка данных происходит немного быстрее при использовании UUID, что неудивительно, поскольку длина фиксированная, а не переменная. Однако разница была небольшой. (233 против 250 сообщений в секунду.)
Я планирую провести дальнейшее тестирование с использованием типа данных bytes. Мои первоначальные результаты показывают, что он работает так же, как str.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ith-databa