Veritabanlarıyla Çalışmak

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Liam Brannigan

Data Scientist & Polars Contributor

Polars ile veritabanını sorgulama

Polars'ın bir SQL sorgusu ve uri'yi bir veritabanına göndermesini gösteren kavramsal diyagram.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Polars ile veritabanını sorgulama

Polars'ın bir veritabanına SQL sorgusu gönderip bir veritabanı motoru aracılığıyla sonuç tablosu aldığı kavramsal diyagram.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Polars'ın sorgulayabildiği veritabanları

Polars'ın çalışabildiği veritabanları

  • Gömülü → yerelde çalışır, sunucu yok
  • DuckDBanalitik veritabanı
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Yapı ruhsatları tablosu

SELECT *
FROM building_permits
LIMIT 5
shape: (5, 5)
| issue_date | permit_type | review_type | street_name  | work_description             |
| ---        | ---         | ---         | ---          | ---                          |
| date       | str         | str         | str          | str                          |
|------------|-------------|-------------|--------------|------------------------------|
| 2026-04-30 | Signs       | SIGN PERMIT | CLARK ST     | Wall sign install            |
| 2026-04-28 | Renovation  | SELF CERT   | OAKLEY AVE   | Add dormer to 8-unit roof    |
| 2026-03-21 | Easy Permit | EASY PERMIT | SEMINARY AVE | Parapet masonry repair       |
| 2026-03-11 | Easy Permit | EASY PERMIT | RHODES AVE   | Rebuild south chimney side   |
| 2026-03-03 | Easy Permit | EASY PERMIT | GIDDINGS ST  | Porch lintel + tuckpointing  |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bağlantı URI'si

import polars as pl

uri = "postgresql://analyst:[email protected]:5432/buildings"
  • postgresql:// protokolü
  • analyst:secret kullanıcı adı ve parola
  • data.chicago.org:5432 ana makine ve port
  • buildings veritabanı adı
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Veritabanını sorgulama

query = """
    SELECT issue_date, permit_type
    FROM building_permits
    WHERE issue_date >= DATE '2026-01-01'
"""







Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Veritabanını sorgulama

query = """
    SELECT issue_date, permit_type
    FROM building_permits
    WHERE issue_date >= DATE '2026-01-01'
"""

permit_counts = (
    pl.read_database_uri(query=query, uri=uri)



)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Veritabanını sorgulama

query = """
    SELECT issue_date, permit_type
    FROM building_permits
    WHERE issue_date >= DATE '2026-01-01'
"""

permit_counts = (
    pl.read_database_uri(query=query, uri=uri)
    .group_by("permit_type")
    .len()
    .sort("len", descending=True)
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Gruplanmış ruhsat sayımı

permit_counts
shape: (3, 2)
| permit_type                     | len |
| ---                             | --- |
| str                             | u32 |
|---------------------------------|-----|
| Easy Permit                     | 58  |
| New Construction                | 14  |
| Renovation                      | 11  |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Motorunuzu seçin

pl.read_database_uri(
    query=query,
    uri=uri,
    engine="connectorx",
)
  • Daha fazla desteklenen veritabanı
pl.read_database_uri(
    query=query,
    uri=uri,
    engine="adbc",
)
  • Desteklenen veritabanlarında daha hızlı
1 https://arrow.apache.org/adbc/current/driver/status.html
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Veritabanına geri yazma

permit_counts.write_database(



)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Veritabanına geri yazma

permit_counts.write_database(
    table_name="permit_type_summary",
    connection=uri,

)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Veritabanına geri yazma

permit_counts.write_database(
    table_name="permit_type_summary",
    connection=uri,
    if_table_exists="replace",
)
  • append
  • fail
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

DuckDB entegrasyonu

import duckdb

db = duckdb.connect("permits.duckdb")


$$

  • DuckDByerleşik Polars çıktısı
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

DuckDB entegrasyonu

import duckdb

db = duckdb.connect("permits.duckdb")

result = db.sql("SELECT * FROM permit_type_summary").pl()
shape: (3, 2)
| permit_type                     | len |
| ---                             | --- |
| str                             | u32 |
|---------------------------------|-----|
| Easy Permit                     | 58  |
| New Construction                | 14  |
| Renovation                      | 11  |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Ayo berlatih!

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Preparing Video For Download...