0

重複の可能性:
Python 10 進数を 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.0 としてではなく、整数 300000 として NUMERIC アフィニティを持つ列に格納されます。

于 2012-10-05T14:44:17.337 に答える