🫶

[Python]DuckDBのshow()関数で20行以上表示する

2025/03/06に公開

結論.show(max_rows=int)を使う


PythonでDuckDBを使っている際、show()だとデフォルトで20行までしか表示されませんが、もう少しだけ表示したい時のTipsです

import duckdb
import pandas as pd

# aというKeyに、0〜99のValueを持つDataFrame
my_data_df = pd.DataFrame(
    [{'a': i} for i in range(100)]
)

# ↓これだと20行しか表示されない
duckdb.sql("select * from my_data_df").show()

こうする

import duckdb
import pandas as pd

my_data_df = pd.DataFrame(
    [{'a': i} for i in range(100)]
)

# ↓これなら50行表示してくれる
duckdb.sql("select * from my_data_df").show(max_rows=50)

max_widthとかmax_col_widthもあるっぽいですね
https://duckdb.org/docs/stable/clients/python/reference/#duckdb.DuckDBPyRelation.show

他にも

Result Conversion系の関数を使って、変換したあとに表示する手もあります
例えばDataFrameに直してからprint()するなどです
が、とりあえず見たいだけならmax_rowsが良いかなと思います

↓公式にあるResult Conversion系の関数

import duckdb

duckdb.sql("SELECT 42").fetchall()   # Python objects
duckdb.sql("SELECT 42").df()         # Pandas DataFrame
duckdb.sql("SELECT 42").pl()         # Polars DataFrame
duckdb.sql("SELECT 42").arrow()      # Arrow Table
duckdb.sql("SELECT 42").fetchnumpy() # NumPy Arrays

https://duckdb.org/docs/stable/clients/python/overview.html#result-conversion

Discussion