python - 列数据类型受其他地方使用的影响

标签 python sqlite apsw

我似乎无法在 SQLite 或 apsw 中找到对以下行为的引用文档:

我有一个部分定义和填充的表:

CREATE TABLE GeoLoc (lat TEXT, lon TEXT);
INSERT INTO GeoLoc (lat, lon) VALUES ('-33.5533422', '151.23422');

当使用apsw时得到结果:

SELECT lat FROM GeoLoc;

我获得了 lat 列的正确 unicode 值类型。但是运行:

SELECT lat FROM GeoLoc WHERE lat + 0 = lat + 0;

我得到了 float 类型!上面的例子是一个愚蠢的例子,但在我的实际查询中,我正在使用 lat 进行一些计算,将其转换为浮点类型,但我不希望类型在任何地方都会改变在我的查询中。

我存储时依赖于lat的准确值。当转换为 float 时,it could change when cast back to string (参见第 4.0 节)。

注意:我使用 Python 的 SQLite3 模块得到了相同的结果,不是来自以及 SQLite3 自己的命令行客户端。

最佳答案

这是一个bug那是 introduced在 SQLite 版本 3.8.3 中。 现在fixed .

关于python - 列数据类型受其他地方使用的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598026/

相关文章:

c# - 使用 Microsoft.EntityFrameworkCore.Sqlite 从 SQLite 数据库进行逆向工程

python - 如何使用 OptParse 检索具有非 ASCII 字符的字符串?

python - 3个涉及Python和SQLite的问题

元组到字典的 Python 列表

python - 最接近用户输入的数字

python - 运行 Flask-Migrate 时保留数据库中的现有表

python - 如何在数据库中的表本身上创建索引?

python - 如何从另一个目录运行 Python pipenv?

android - Android中的SQLite:是否可以在应用程序中使用有限数量的行,还是应该手动删除它们?

java - SQLite 中逗号分隔字符串的匹配查询?