0

可能重复:
如何将 Python 十进制转换为 SQLite 数字?

我遇到了一个问题,sqlite 没有显示不是小数点后 2 位的值,但是当我在 MySQL(工作台)上测试它时它工作正常。我没有给出错误或任何东西,只是静静地消失了。我想弄清这个巫毒的真相,这样它就不会回来咬我了。

MY_CHOICE = (
   (Decimal('20.00'), '20'), /#doesnt work with sqlite
   (Decimal('20.00'), '20.00'), /#doesnt work with sqlite
   (Decimal('10.50'), '10.50'), /#doesnt work with sqlite
   (Decimal('5.05'), '5.05'),  /#works with sqlite
   (Decimal('4.75'), '4.75'),  /#works with sqlite
)

my_model = models.DecimalField(max_digits=6, decimal_places=2, choices=My_CHOICE, null=True, blank=True)

任何可能有用的想法或想法都会很棒。谢谢。

4

1 回答 1

1

SQLite 是一个非常“民主”的轻量级数据库。例如,您可以声明 VARCHAR(20) 字段并向其写入 30 个符号的字符串,而不会出现任何错误或警告消息。

从 SQLite文档

字符串可能看起来像带有小数点和/或指数表示法的浮点文字,但只要该值可以表示为整数,NUMERIC 亲和性就会将其转换为整数。因此,字符串“3.0e+5”以整数 300000 而非浮点值 300000.0 的形式存储在具有 NUMERIC 亲和性的列中。

于 2012-10-05T14:44:17.337 回答