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

使用pandas sqldf创建表及插入数据失败求助

解决pandasql创建表后查询提示“no such table”的问题

问题重现

执行以下代码时,创建表后查询会抛出OperationalError: no such table: mytable错误:

pip install -U pandasql
from pandasql import sqldf
sqldf("create table mytable (id integer, name text)")
sqldf("select * from mytable")

问题原因

pandasql默认每次调用sqldf()都会新建一个独立的SQLite临时连接,连接执行完毕后会自动关闭,之前创建的表也会随连接销毁,导致后续调用无法访问已创建的表。

解决方法

方法1:使用全局上下文共享连接

创建一个复用连接的pandasql上下文,让所有SQL操作在同一个连接中执行:

from pandasql import sqldf

# 定义复用全局连接的查询函数
pysqldf = lambda q: sqldf(q, globals())

# 创建表
pysqldf("create table mytable (id integer, name text)")
# 插入数据
pysqldf("insert into mytable values (1, 'abc')")
pysqldf("insert into mytable values (2, 'def')")
pysqldf("insert into mytable values (3, 'ghk')")
# 查询表
result = pysqldf("select * from mytable")
print(result)

方法2:单次调用执行多段SQL语句

用分号分隔多个SQL操作,在一次sqldf调用中完成创建、插入和查询:

from pandasql import sqldf

# 一次性执行所有SQL操作
result = sqldf("""
create table mytable (id integer, name text);
insert into mytable values (1, 'abc');
insert into mytable values (2, 'def');
insert into mytable values (3, 'ghk');
select * from mytable;
""")
print(result)

说明

  • 方法1适合需要拆分多次执行不同SQL操作的场景,连接会持续保留直到程序结束。
  • 方法2适合一次性完成所有操作的场景,无需维护持久连接。

内容的提问来源于stack exchange,提问作者sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:55:26