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

gri*_*tis 3 python pandas duckdb

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

df = pandas.read_parquet("my_data.parquet")
con.query("select * from df limit 10").fetch_df()
Run Code Online (Sandbox Code Playgroud)

我也喜欢 duckdb 拥有像SHOW TABLES;真正的数据库一样的元数据命令。但是,SHOW TABLES;不显示 pandas DataFrames 或其他类似表格的对象。

我的问题是:duckdb 是否提供类似的东西SHOW TABLES;,包括(1)真实的数据库表和(2)类表对象(例如 pandas DataFrames)及其模式?

谢谢!

meh*_*dio 6

您可以使用此处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
Run Code Online (Sandbox Code Playgroud)

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