Neste tutorial, vamos construir uma compreensão abrangente e prática do DuckDB-Python, explorando suas funcionalidades diretamente no código no Colab. Começamos com os fundamentos do gerenciamento de conexão e geração de dados, e então avançamos para fluxos de trabalho analíticos reais, incluindo a consulta de objetos Pandas, Polars e Arrow sem carregamento manual, transformando resultados em vários formatos e escrevendo SQL expressivo para funções de janela, pivôs, macros, CTEs recursivas e junções. À medida que progredimos, também exploramos recursos orientados ao desempenho, como inserção em massa, criação de perfil, armazenamento particionado, acesso multi-threaded, consulta de arquivos remotos e padrões de exportação eficientes, para que não apenas aprendamos o que o DuckDB pode fazer, mas também como usá-lo como um mecanismo analítico sério dentro do Python. Copiar Código Copiado Usar um Navegador diferente import subprocess, sys for pkg in ["duckdb", "pandas", "pyarrow", "polars"]: try: subprocess.check_call( [sys.executable, "-m", "pip", "install", "-q", pkg], stderr=subprocess.DEVNULL, ) except subprocess.CalledProcessError: subprocess.check_call( [sys.executable, "-m", "pip", "install", "-q", "--break-system-packages", pkg], stderr=subprocess.DEVNULL, ) import duckdb import pandas as pd import pyarrow as pa import pyarrow.parquet as pq import polars as pl import numpy as np import json, os, time, threading, tempfile from datetime import date, datetime, timedelta print(f"DuckDB version : {duckdb.__version__}") print(f"Pandas version : {pd.__version__}") print(f"PyArrow version: {pa.__version__}") print(f"Polars version : {pl.__version__}") print("=" * 72) WORKDIR = tempfile.mkdtemp(prefix="duckdb_tutorial_") os.chdir(WORKDIR) print(f"Working directory: {WORKDIR}
") print("=" * 72) print("SEÇÃO 1: Gerenciamento de Conexão") print("=" * 72) con = duckdb.connect() print(con.sql("SELECT 'Hello from in-memory DuckDB!' AS greeting").fetchone()[0]) DB_PATH = os.path.join(WORKDIR, "tutorial.duckdb") pcon = duckdb.connect(DB_PATH) pcon.sql("CREATE OR REPLACE TABLE persisted(id INT, val TEXT)") pcon.sql("INSERT INTO persisted VALUES (1,'alpha'), (2,'beta')") print("Persisted rows:", pcon.sql("SELECT count(*) FROM persisted").fetchone()[0]) pcon.close() pcon2 = duckdb.connect(DB_PATH) print("After re-open :", pcon2.sql("SELECT * FROM persisted ORDER BY id").fetchall()) pcon2.close() con_cfg = duckdb.connect(config={ "threads": 2, "memory_limit": "512MB", "default_order": "DESC", }) prin
Fonte: MarkTechPost
Publicado em 2026-04-13