使用sqlite数据库引擎的peewee字段类型的确切限制是什么?

时间:2019-01-23 22:03:24

标签: python database sqlite orm peewee

我开始将Peewee与sqlite数据库引擎一起使用,并且对应该使用哪种字段类型有很多困惑。我现在为自己编写小脚本,因此性能不是问题,但由于数据类型限制而可能导致数据丢失。

在官方peewee documentation上列出了很多类型,尽管没有提供有关它们的信息。我希望以更清晰的方式提供其限制,例如w3 did

我现在正在进行各种测试,并得到了奇怪的结果。像IntegerField一样,BigIntegerField和SmallIntegerField实际上以相同的列类型进行映射(这样做有什么意义呢?)。 CharField映射到VARCHAR(255),但是我可以在那里存储大量文本-它是否安全或应被视为不可预测的行为? FixedCharField也允许存储大文本,但不截断就可以破坏它们,等等。我也正在研究sqlite documentation,但仅介绍了5种基本类型。虽然我清楚地看到在SQLite的DB浏览器和PyCharm的DB浏览器扩展中,该peewee实际上使用更广泛的映射(例如,使用sqlite未引入的VARCHAR)或以自己的方式解释现有类型(例如,允许.save() BooleanField中的各种值会将它们截断为0或1)。

在最好的情况下,我希望了解使用sqlite引擎时所有25种字段类型之间的确切限制和区别。不过,很高兴知道在这些广义类别中仅具有最大限制来存储整数,浮点数,文本和任意二进制数据的字段类型,我应该选择安全地存储最大数量的数据吗?

1 个答案:

答案 0 :(得分:0)

Sqlite只有5种类型,文本,整数,实型(浮点型),blob和null。

Varchar,char,text等都被视为TEXT。长度无所谓。

整数,smallint,bigint等被视为INT。 Sqlite使用64位整数。

阅读Sqlite文档,它将解释所有这一切:

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