Я начинаю использовать peewee с движком базы данных sqlite и сильно путаюсь в том, какой тип поля мне следует использовать. Сейчас я пишу небольшие сценарии для себя, поэтому проблема не в производительности, а в возможной потере данных из-за ограничений типа данных.
В официальной документации peewee есть много типов перечислены, хотя никакой информации о них не предоставлено. Я бы хотел, чтобы их ограничения были указаны более четко, как это сделал w3.
Сейчас я провожу различные тесты и получаю странные результаты. Как и IntegerField, BigIntegerField и SmallIntegerField на самом деле сопоставляются с одним и тем же типом столбца (какой смысл тогда делать их разными?). CharField сопоставляется с VARCHAR(255), но я могу хранить там большие объемы текста - безопасно ли это или следует рассматривать как непредсказуемое поведение? FixedCharField также позволяет хранить большие тексты, но искажает их без усечения и т. д. Я исследовал документацию sqlite тоже, но там представлено всего 5 основных типов. Хотя я ясно вижу в браузере БД для SQLite и в расширении браузера БД для PyCharm, этот peewee на самом деле использует более широкое сопоставление (скажем, использует VARCHAR, не представленный sqlite) или интерпретирует существующие типы по-своему (скажем, позволяет .save() огромное разнообразие значений в BooleanField, усекая их до 0 или 1).
В лучшем случае я хочу знать точные ограничения и разницу между всеми 25 типами полей при использовании движка sqlite. Тем не менее, было бы неплохо знать только типы полей с наибольшими ограничениями для хранения целых чисел, данных с плавающей запятой, текста и произвольных двоичных данных — в этих обобщенных категориях — что мне выбрать для безопасного хранения наибольшего объема данных?