Каковы точные ограничения на типы полей peewee при использовании движка базы данных sqlite? - PullRequest
0 голосов
/ 24 января 2019

Я начинаю использовать peewee с движком базы данных sqlite, и у меня возникает путаница в отношении того, какой тип поля мне следует использовать.Сейчас я пишу небольшие сценарии для себя, поэтому производительность не является проблемой, но возможна потеря данных из-за ограничений типов данных.

В официальной документации peewee хотя в списке много типовинформация о них не предоставлена.Хотелось бы, чтобы их ограничения были предоставлены более понятным способом, как w3 сделал .

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

В лучшем случае я хотел бы знать точные пределы и разницу между всеми 25 типами полей при использовании движка sqlite.Хотя было бы неплохо знать только типы полей с наибольшими ограничениями для хранения целочисленных, с плавающей запятой, текста и произвольных двоичных данных - в этих обобщенных категориях - какие я должен выбрать для безопасного хранения наибольшего количества данных?

1 Ответ

0 голосов
/ 25 января 2019

Sqlite имеет только 5 типов: text, int, real (float), blob и null.

Varchar, char, text и т. Д. Все обрабатываются как TEXT. Длина не имеет значения.

Integer, smallint, bigint и т. Д. Рассматриваются как INT. Sqlite использует 64-битные целые числа.

Прочтите документацию по Sqlite, это все объяснит:

https://www.sqlite.org/datatype3.html

...