Meneroka Ciri Baharu dalam PostgreSQL dengan Python

王林
Lepaskan: 2024-08-25 06:00:38
asal
609 orang telah melayarinya

Exploring New Features in PostgreSQL with Python

PostgreSQL 17 membawakan pelbagai ciri dan peningkatan baharu yang menarik yang memenuhi keperluan pembangun, saintis data dan pentadbir pangkalan data. Artikel ini akan meneroka beberapa penambahan dan peningkatan yang paling ketara dalam PostgreSQL 17 dan menunjukkan cara menggunakan ciri ini dengan Python.

  1. Peningkatan Prestasi Pertanyaan dengan Isih Bertambah Salah satu ciri menonjol PostgreSQL 17 ialah peningkatan algoritma isihan tambahan, yang kini menyokong julat kes penggunaan yang lebih luas. Isih tambahan boleh mengurangkan dengan ketara masa yang diambil untuk melaksanakan pertanyaan yang melibatkan set data yang besar, terutamanya apabila berurusan dengan data yang diisih.

Contoh Python: Isih Bertambah dengan PostgreSQL 17

Untuk menggunakan ciri ini, mari kita sediakan sambungan PostgreSQL menggunakan perpustakaan psycopg2 Python:

`import psycopg2

Sambung ke pangkalan data PostgreSQL

sambung = psycopg2.sambung(
hos="localhost",
pangkalan data="test_db",
pengguna="postgres",
kata laluan="kata laluan_anda"
)

Buat objek kursor

cur = conn.cursor()

Buat jadual dan masukkan data

cur.execute("""
BUAT JADUAL JIKA TIDAK ADA set_data besar (
id KUNCI UTAMA SIRI,
kategori VARCHAR(50),
nilai INT
);
""")

Masukkan data sampel

cur.execute("""
INSERT IN TO large_dataset (kategori, nilai)
PILIH
'Kategori' || (i % 10),
rawak() * 1000
DARI generate_series(1, 1000000) i;
""")

conn.commit()

Menggunakan Isih Bertambah

cur.execute("""
JELASKAN ANALISIS
PILIH * DARI large_dataset
PESANAN MENGIKUT kategori, nilai;
""")

Ambil dan cetak pelan pertanyaan

query_plan = cur.fetchall()
untuk baris dalam query_plan:
cetak(baris)

Tutup kursor dan sambungan

cur.close()
conn.close()
`

Dalam contoh ini, isihan inkremental PostgreSQL 17 yang dipertingkatkan dengan cekap mengendalikan klausa ORDER BY, mengisih data secara berperingkat dan mengurangkan masa pelaksanaan pertanyaan keseluruhan.

  1. Peningkatan Laluan JSON PostgreSQL 17 memperkenalkan peningkatan kepada JSONPath, menjadikannya lebih mudah untuk membuat pertanyaan dan memanipulasi data JSON. Ini amat berguna untuk aplikasi yang sangat bergantung pada JSON untuk pertukaran data.

Contoh Python: Menggunakan Penambahbaikan JSONPath
`## Sambung semula ke pangkalan data
conn = psycopg2.connect(
hos="localhost",
pangkalan data="test_db",
pengguna="postgres",
kata laluan="kata laluan_anda"
)
cur = conn.cursor()

Buat jadual dengan data JSON

cur.execute("""
BUAT JADUAL JIKA TIDAK WUJUD json_data (
id KUNCI UTAMA SIRI,
data JSONB
);
""")

Sisipkan sampel data JSON

cur.execute("""
MASUKKAN KE DALAM json_data (data)
NILAI
('{"name": "Alice", "age": 30, "skills": ["Python", "SQL"]}'),
('{"name": "Bob", "umur": 25, "kemahiran": ["Java", "C++"]}');
""")

conn.commit()

Tanya data JSON menggunakan JSONPath

cur.execute("""
PILIH data ->> 'nama' AS nama, data ->> 'umur' SEBAGAI umur
DARIPADA json_data
DI MANA data @? '$.kemahiran ? (@ == "Python")';
""")

Ambil dan cetak hasilnya

hasil = cur.fetchall()
untuk baris dalam hasil:
cetak(baris)

Tutup kursor dan sambungan

cur.close()
conn.close()
`

Kod ini menunjukkan cara keupayaan JSONPath PostgreSQL 17 yang dipertingkatkan memudahkan pengekstrakan data daripada medan JSON berdasarkan keadaan yang kompleks.

  1. Selarian Dipertingkatkan untuk Penciptaan Indeks Penciptaan indeks dalam PostgreSQL 17 kini lebih cekap disebabkan keselarian yang lebih baik, membolehkan pengindeksan lebih pantas pada set data yang besar.

Contoh Python: Penciptaan Indeks Selari
`## Sambung semula ke pangkalan data
conn = psycopg2.connect(
hos="localhost",
pangkalan data="test_db",
pengguna="postgres",
kata laluan="kata laluan_anda"
)
cur = conn.cursor()

Buat meja besar

cur.execute("""
BUAT JADUAL JIKA TIDAK WUJUD large_table (
id KUNCI UTAMA SIRI,
data VARCHAR(255)
);
""")

Masukkan sebilangan besar baris

cur.execute("""
MASUKKAN KE DALAM jadual_besar (data)
PILIH
md5(rawak()::teks)
DARI generate_series(1, 5000000);
""")

conn.commit()

Buat indeks dengan selari

cur.execute("""
BUAT INDEX SECARA SAMPINGAN large_table_data_idx PADA large_table (data);
""")

conn.commit()

Tutup kursor dan sambungan

cur.close()
conn.close()
`

Contoh ini mempamerkan keupayaan PostgreSQL 17 yang dipertingkatkan untuk mencipta indeks secara serentak menggunakan berbilang teras CPU, yang sangat bermanfaat apabila bekerja dengan jadual besar.

  1. Fungsi Mematuhi Standard SQL/JSON PostgreSQL 17 telah menambah sokongan untuk lebih banyak fungsi patuh standard SQL/JSON, meningkatkan keupayaannya untuk mengendalikan data JSON dengan lebih banyak sintaks standard SQL.

Contoh Python: Fungsi Standard SQL/JSON
`## Sambung semula ke pangkalan data
conn = psycopg2.connect(
hos="localhost",
pangkalan data="test_db",
pengguna="postgres",
kata laluan="kata laluan_anda"
)
cur = conn.cursor()

Buat jadual dengan data JSON

cur.execute("""
BUAT JADUAL JIKA TIDAK WUJUD data_pekerja (
id KUNCI UTAMA SIRI,
maklumat JSONB
);
""")

Sisipkan sampel data JSON

cur.execute("""
MASUKKAN KE DALAM data_pekerja (maklumat)
NILAI
('{"name": "John", "department": "Jualan", "gaji": 5000}'),
('{"name": "Jane", "jabatan": "IT", "gaji": 7000}');
""")

conn.commit()

Pertanyaan menggunakan fungsi SQL/JSON

cur.execute("""
PILIH jsonb_path_query_first(info, '$.department') AS jabatan
DARIPADA data_pekerja
WHERE jsonb_path_exists(info, '$.gaji ? (@ > 6000)');
""")

Ambil dan cetak hasilnya

hasil = cur.fetchall()
untuk baris dalam hasil:
cetak(baris)

Tutup kursor dan sambungan

cur.close()
conn.close()
`

Dalam contoh ini, kami menunjukkan cara menggunakan fungsi standard SQL/JSON untuk menanyakan data JSON, menunjukkan pematuhan PostgreSQL 17 dengan standard SQL baharu.

Untuk mendapatkan maklumat lanjut tentang PostgreSQL 17 dan ciri baharunya, rujuk dokumentasi rasmi.

Atas ialah kandungan terperinci Meneroka Ciri Baharu dalam PostgreSQL dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan