首页 > 解决方案 > 评估字符串类型字段中的值

问题描述

我有以下代码:

1) table "keys" with Field ('kcv', 'string')
2) grid = SQLFORM.grid(db.keys, user_signature=False)

当我尝试在 kcv 字段中编辑或创建值为 9E2 的记录时,我在新记录的 kcv 字段中得到“900”。如何在不评估的情况下在记录中获取字符串“9E2”?为什么 web2py 试图解释字符串字段中的值?

标签: web2py

解决方案


如果您使用 SQLite,您可能最初将该字段定义为 type double(或decimal),后来“迁移”为 type string如此处所述,此类迁移在 SQLite 中没有影响,因此 SQLite 将继续将列视为数字并在可能的情况下将值强制转换为数字(SQLite 不会抱怨在列中存储非数字字符串,因为它没有刚性列types - 它只是具有 type affinities,它确定可能发生哪些类型的强制 - 请参阅https://www.sqlite.org/datatype3.html)。

您必须从正确的列类型开始重新创建表。


推荐阅读