首页 > 解决方案 > 类型错误:+ 不支持的操作数类型:“sqlite3.Cursor”和“int”

问题描述

想从 sqlite 数据库中获取一个整数,以便我可以进行计算,但是在尝试进行数学运算时我一直遇到问题

我知道从数据库中抓取会返回一个元组,但我不确定如何从该元组中获取 int,或者是否有办法只返回一个 int

(感谢你的帮助!)

xp_update = 'UPDATE xpdata SET xp = ? WHERE user_id = ? AND guild_id = ?'
val = (xp_inc, user_id, guild_id)
cursor.execute(xp_update, val)

lvl_grab = cursor.execute('SELECT level FROM xpdata WHERE(user_id=? AND guild_id=?)', ('user_id', 'guild_id'))
xp_grab = cursor.execute('SELECT xp FROM xpdata WHERE(user_id=? AND guild_id=?)', ('user_id', 'guild_id'))
lvl_start = lvl_grab
lvl_end = int(((xp_grab+xp_inc)//42) ** 0.55)

标签: pythondatabasesqlitewebdiscord.py

解决方案


这不是您从数据库中检索数据的方式,请阅读一些https://docs.python.org/3/library/sqlite3.html

cursor.execute('SELECT level FROM xpdata WHERE(user_id=? AND guild_id=?)', ('user_id', 'guild_id'))
lvl_grab = cursor.fetchone()[0]

cursor.execute('SELECT xp FROM xpdata WHERE(user_id=? AND guild_id=?)', ('user_id', 'guild_id'))
xp_grab = cursor.fetchone()[0]

但是您可以在一个 SQL 查询中检索多个数据

cursor.execute('SELECT level,xp FROM xpdata WHERE(user_id=? AND guild_id=?)', ('user_id', 'guild_id'))
lvl_grab, xp_grab = cursor.fetchone()

推荐阅读