我正在try 将Polars DataFrame写入到一个鸭子数据库中.我有以下简单的代码,我希望它们能正常工作:

import polars as pl
import duckdb

pldf = pl.DataFrame({'mynum': [1,2,3,4]})
with duckdb.connect(database="scratch.db", read_only=False) as con:
    pldf.write_database(table_name='test_table', connection=con)

但是,我得到了以下错误:

sqlalchemy.exc.ArgumentError: Expected string or URL object, got <duckdb.duckdb.DuckDBPyConnection object

如果我使用非默认值engine='adbc'而不是df.write_database()的默认值engine='sqlalchemy',我会得到类似的错误.

因此,似乎只需为ducdkb数据库交换一个URI就足够容易了,但我也没能让它工作.可能因为我在Windows上而变得复杂吗?

推荐答案

In-memory database.如果你只想使用DuckDB查询polars rame,只要表存在于当前作用域中,就可以简单地实现这一点.

duckdb.sql("SELECT * FROM df").show()

Persistent database如果你想使用persistent数据库,你可以安装duckdb-engine并使用连接URI字符串来编写数据库.

df.write_database(
    table_name='test_table',
    connection="duckdb:///scratch.db",
)

使用DuckDB将数据读回正常工作.

with duckdb.connect(database="scratch.db", read_only=False) as con:
    con.query("SELECT * FROM test_table").show()
┌───────┐
│ mynum │
│ int64 │
├───────┤
│     1 │
│     2 │
│     3 │
│     4 │
└───────┘

Python相关问答推荐

pandas DataFrame GroupBy.diff函数的意外输出

运行Python脚本时,用作命令行参数的SON文本

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

使用groupby Pandas的一些操作

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

如何在给定的条件下使numpy数组的计算速度最快?

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

如何启动下载并在不击中磁盘的情况下呈现响应?

合并帧,但不按合并键排序

启动带有参数的Python NTFS会导致文件路径混乱

Flash只从html表单中获取一个值

搜索按钮不工作,Python tkinter

在matplotlib中使用不同大小的标记顶部添加批注

用两个字符串构建回文

如何在Airflow执行日期中保留日期并将时间转换为00:00

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

文本溢出了Kivy的视区

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?

搜索结果未显示.我的URL选项卡显示:http://127.0.0.1:8000/search?";,而不是这个:";http://127.0.0.1:8000/search?q=name";