如何使用aiosqlite从SQLite单个单元格获取纯数据而非元组?
异步SQLite(aiosqlite)获取单个单元格纯数据的正确方法
直接通过索引提取元组的第一个元素,或者用元组解包的方式,就能安全拿到单个单元格的原生数据,完全不会破坏日期/时间等类型。
方法1:索引提取
这是最直接的方式,fetchone()返回的元组中第一个元素就是目标单元格的值,直接用[0]提取即可:
async def get_single_modchannel(): async with aiosqlite.connect('your_database.db') as db: async with db.execute("SELECT modchannel FROM sconfig WHERE your_condition_clause") as cursor: result = await cursor.fetchone() if result: # 直接提取元组第一个元素,保留原始数据类型 return result[0] return None
方法2:元组解包
如果确定查询结果是单行单列,也可以用解包语法直接获取值,效果和索引提取一致:
async def get_single_modchannel(): async with aiosqlite.connect('your_database.db') as db: async with db.execute("SELECT modchannel FROM sconfig WHERE your_condition_clause") as cursor: result = await cursor.fetchone() if result: # 解包元组,直接拿到单个值 modchannel_value, = result return modchannel_value return None
为什么不用join+map?
join+map会把所有元组元素强制转换成字符串再拼接,这会丢失日期/时间等原生类型的信息(比如把datetime对象转成字符串),完全没必要用这种方法。上面两种方式都是直接获取元组中的原生值,不会对数据类型做任何修改,能完美保留原始数据格式。
内容的提问来源于stack exchange,提问作者Nik
相关产品推荐
相关产品推荐

