我想创建一个像对象一样的无连接数据框,我可以将其注册到连接,就像我使用箭头或Pandas 数据框一样.

import duckdb
conn = duckdb.connect(":memory:")

df = conn.sql("SELECT * FROM '/tmp/test.csv'")
conn.close()

conn1 = duckdb.connect(":memory:")
conn1.register("test", df)
conn1.execute("SELECT * FROM test")

此代码不起作用,但出现异常:Connection Error: Connection has already been closed

如果我注释conn.close(),那么它抛出:The relation you are attempting to register was not made from this connection

如果我做df = conn.sql("SELECT * FROM lineitem").arrow(),它就会起作用,因为中间状态是箭头格式.它实现了,并不依赖于联系.

我是否可以在没有materialized 的情况下在duckdb中执行类似的操作,而只是创建一个懒惰的数据框,以便在另一个连接中注册和使用?

我希望duckdb对象没有连接,并且我可以在另一个连接上注册它.

推荐答案

关系被绑定到连接,这是因为关系已经被部分绑定,结果的名称和类型已经被解析.

您正在寻找的更类似于已解析的语句,我有一个分支负责将ExtractStatements方法从C++API公开到Python绑定.|

这更符合您的预期,不依赖于任何给定的连接,从那里您可以从解析的语句创建关系.

Python相关问答推荐

根据在同一数据框中的查找向数据框添加值

如何在Python脚本中附加一个Google tab(已经打开)

梯度下降:简化要素集的运行时间比原始要素集长

ThreadPoolExecutor和单个线程的超时

转换为浮点,pandas字符串列,混合千和十进制分隔符

当点击tkinter菜单而不是菜单选项时,如何执行命令?

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

如何在Python中使用另一个数据框更改列值(列表)

从Windows Python脚本在WSL上运行Linux应用程序

Matplotlib中的字体权重

Polars将相同的自定义函数应用于组中的多个列,

导入错误:无法导入名称';操作';

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

如何从比较函数生成ngroup?

使用SQLAlchemy从多线程Python应用程序在postgr中插入多行的最佳方法是什么?'

ModuleNotFoundError:Python中没有名为google的模块''

如何在Python中自动创建数字文件夹和正在进行的文件夹?

我如何处理超类和子类的情况

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

如何在Python中画一个只能在对角线内裁剪的圆?