我怎么能插入一个浮点到一个真正的位置在SQLite数据库与python?



我正在尝试制作一个python程序,可以使用SQLite数据库跟踪一段时间内花费的总金额,以跟踪运行总数。

现在,我有

def investement_update(a):
conn = sqlite3.connect('trades.db')
c = conn.cursor()
c.execute("SELECT * FROM money_tracker")
old = c.fetchone()[0]
print(old)
new = old + a
print(new)
print(type(new))
str(new)
c.execute("UPDATE money_tracker SET invested_money = ('?')", (new))
print('asfdad')
conn.commit()
conn.close()

但是,这会一直抛出

的错误
PS C:UserssamueProjectscbproV2> & C:/Users/samue/AppData/Local/Microsoft/WindowsApps/python3.9.exe c:/Users/samue/Projects/cbpro/V2/main.py
2.0
4.2
<class 'float'>
Traceback (most recent call last):
File "c:UserssamueProjectscbproV2main.py", line 5, in <module>
database.investement_update(2.2)
File "c:UserssamueProjectscbproV2database.py", line 65, in investement_update
c.execute("UPDATE money_tracker SET invested_money = ('?')", (new))
ValueError: parameters are of unsupported type

我不确定该怎么做来修复这个错误,我试过让它成为一个字符串(这就是现在列出的),我试过把它作为一个int,一个float,所有这些返回这个错误。然而,如果我硬编码一个编辑,它工作得很好。

编辑我已经尝试删除占位符周围的括号和引号,但仍然得到相同的错误。

def investement_update(a):
conn = sqlite3.connect('trades.db')
c = conn.cursor()
c.execute("SELECT * FROM money_tracker")
old = c.fetchone()[0]
print(old)
new = old + a
print(new)
print(type(new))
str(new)
c.execute("UPDATE money_tracker SET invested_money = ?", (new))
print('asfdad')
conn.commit()
conn.close()
PS C:UserssamueProjectscbproV2> & C:/Users/samue/AppData/Local/Microsoft/WindowsApps/python3.9.exe c:/Users/samue/Projects/cbpro/V2/main.py
2.0
4.2
<class 'float'>
Traceback (most recent call last):
File "c:UserssamueProjectscbproV2main.py", line 5, in <module>
database.investement_update(2.2)
File "c:UserssamueProjectscbproV2database.py", line 65, in investement_update
c.execute("UPDATE money_tracker SET invested_money = '?'", (new))
ValueError: parameters are of unsupported type
PS C:UserssamueProjectscbproV2> 

去掉参数占位符周围的圆括号引号,例如:

".. SET invested_money = ?"

包含引号将其转换为SQL字符串字面值(值为'?",如。提供的值是(不是无意使用的),不需要括号。

同时,确保传递一个元组。对于单个参数,必须写成(x,),如下所示:

c.execute(".. = ?", (new,))

参见如何创建只有一个元素的元组。

最新更新