将decimal.Decimal添加到sqlite3数据库

时间:2017-09-09 09:57:28

标签: python python-3.x sqlite

我知道将小数转换为浮点数的问题,反之亦然。目前,我有一个几乎总是使用decimal模块运行的程序,但是当我尝试将任何decimal.Decimal数据类型添加到我的数据库中时,它会抛出错误:

sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

以下是代码:

db = sqlite3.connect('test.db')
c = db.cursor()

c.execute('CREATE TABLE IF NOT EXISTS test1 (decimal REAL)')

a = Decimal(2.14) - Decimal(1.55)

c.execute("INSERT INTO test1(decimal) VALUES(?)",(a,))
db.commit()

但如果我将Decimal更改为float,则可以正常使用。

  1. 这会影响答案的准确性(我很确定吗)?

  2. 有没有更好的方法来转换为float以便存储在数据库中?如果我无法将其直接存储在Decimal类型中,那么在从数据库中提取后,我需要能够将其转换回Decimal

    1. 为什么“DECIMAL”数据类型不适用于此?我在这里想念的是什么?

0 个答案:

没有答案