我开始将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种字段类型之间的确切限制和区别。不过,很高兴知道在这些广义类别中仅具有最大限制来存储整数,浮点数,文本和任意二进制数据的字段类型,我应该选择安全地存储最大数量的数据吗?
答案 0 :(得分:0)
Sqlite只有5种类型,文本,整数,实型(浮点型),blob和null。
Varchar,char,text等都被视为TEXT。长度无所谓。
整数,smallint,bigint等被视为INT。 Sqlite使用64位整数。
阅读Sqlite文档,它将解释所有这一切: