You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastSQLite无.cursor()方法时如何正确打印查询结果?

FastSQLite无.cursor()方法时如何正确打印查询结果?

我完全懂你现在的困惑——明明数据已经成功插入数据库了,用fetch_all获取后转成DataFrame却显示空表,这确实挺让人摸不着头脑的。咱们来一步步解决这个问题:

问题根源

你代码里的db.fetch_all('gato')调用方式不对!FastSQLite的fetch_all方法需要传入完整的SQL查询语句,而不是直接传表名。直接传表名的话,它没法正确执行查询,自然返回空结果。

修正后的代码

把获取数据的部分改成执行完整的SELECT语句,就能正常拿到数据了,我给你调整了完整代码:

from fastsqlite import FastSQLite
import pandas as pd

db = FastSQLite()
db.connect('file.db')

# 先判断表是否存在,避免重复创建报错
if not db.table_exists('gato'):
    db.create_table('gato', 'id int, rum varchar(300)')

# 插入数据(也可以用参数化插入更安全,不过先按你的方式来)
db.insert('gato', 'id, rum', '1,123')
db.insert('gato', 'id, rum', '2,223')
db.insert('gato', 'id, rum', '3,323')
db.insert('gato', 'id, rum', '4,423')

# 关键:传入完整的SELECT查询语句
table = db.fetch_all('SELECT * FROM gato')

print()
print("===========================")
# 指定列名让DataFrame显示更清晰
print(pd.DataFrame(table, columns=['id', 'rum']))
print("===========================")
print()

额外说明

  • 除了fetch_all,你也可以用db.query()方法,它的用法和fetch_all一致,都是执行SQL语句并返回结果。
  • 加上table_exists的判断是个小细节,避免重复运行代码时因为表已存在而抛出错误。
  • 如果后续要插入大量数据,建议用参数化插入的方式,既安全又高效,比如db.insert('gato', ['id', 'rum'], [(5, '523'), (6, '623')])这种批量插入的写法。

备注:内容来源于stack exchange,提问作者user1942505

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:55:27