sqlite不保存小数,但在MySQL中工作正常

时间:2012-10-05 14:35:38

标签: python mysql django sqlite

  

可能重复:
  How to convert Python decimal to SQLite numeric?

我遇到的问题是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)

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

1 个答案:

答案 0 :(得分:1)

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

来自SQLite documentation

  

字符串可能看起来像带有小数点和/或指数表示法的浮点字面值,但只要该值可以表示为整数,NUMERIC亲和关系就会将其转换为整数。因此,字符串'3.0e + 5'存储在NUMERIC亲和力为整数300000的列中,而不是浮点值300000.0。