如何在Python会话中获取duckdb可见的类表对象列表?

问题描述 投票:0回答:2

我喜欢 duckdb 让我像查询 SQL 表一样查询 DataFrame:

df = pandas.read_parquet("my_data.parquet")
con.query("select * from df limit 10").fetch_df()

我也喜欢 duckdb 具有像

SHOW TABLES;
这样的元数据命令,就像真正的数据库一样。但是,
SHOW TABLES;
不显示 pandas DataFrame 或其他类似表格的对象。

我的问题是:duckdb 是否提供类似

SHOW TABLES;
的东西,其中包括(1)真实数据库表和(2)类表对象(例如 pandas DataFrames)及其模式?

谢谢!

python pandas duckdb
2个回答
7
投票

您可以使用不同的元数据表函数

duckdb_%
,如此处

所述

相当于

SHOW TABLES
并将其转换为 pandas 数据框

import duckdb

df = duckdb.sql("SELECT * FROM duckdb_tables;").df()
print(df.dtypes)

database_name             object
database_oid               int64
schema_name               object
schema_oid                 int64
table_name                object
table_oid                  int64
internal                    bool
temporary                   bool
has_primary_key             bool
estimated_size             int64
column_count               int64
index_count                int64
check_constraint_count     int64
sql                       object
dtype: object

注意:我使用的是最新版本的duckDB v0.7.1


0
投票

只是在寻找这个,我发现这有效,当 select * from duckdb_tables 对我不起作用时:

import duckdb
duck_db = duckdb.connect('my_db_location', read_only=False)
db.execute("SHOW TABLES").df()
© www.soinside.com 2019 - 2024. All rights reserved.