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.
Contoh Python: Isih Bertambah dengan PostgreSQL 17
Untuk menggunakan ciri ini, mari kita sediakan sambungan PostgreSQL menggunakan perpustakaan psycopg2 Python:
`import psycopg2
sambung = psycopg2.sambung(
hos="localhost",
pangkalan data="test_db",
pengguna="postgres",
kata laluan="kata laluan_anda"
)
cur = conn.cursor()
cur.execute("""
BUAT JADUAL JIKA TIDAK ADA set_data besar (
id KUNCI UTAMA SIRI,
kategori VARCHAR(50),
nilai INT
);
""")
cur.execute("""
INSERT IN TO large_dataset (kategori, nilai)
PILIH
'Kategori' || (i % 10),
rawak() * 1000
DARI generate_series(1, 1000000) i;
""")
conn.commit()
cur.execute("""
JELASKAN ANALISIS
PILIH * DARI large_dataset
PESANAN MENGIKUT kategori, nilai;
""")
query_plan = cur.fetchall()
untuk baris dalam query_plan:
cetak(baris)
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.
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()
cur.execute("""
BUAT JADUAL JIKA TIDAK WUJUD json_data (
id KUNCI UTAMA SIRI,
data JSONB
);
""")
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()
cur.execute("""
PILIH data ->> 'nama' AS nama, data ->> 'umur' SEBAGAI umur
DARIPADA json_data
DI MANA data @? '$.kemahiran ? (@ == "Python")';
""")
hasil = cur.fetchall()
untuk baris dalam hasil:
cetak(baris)
cur.close()
conn.close()
`
Kod ini menunjukkan cara keupayaan JSONPath PostgreSQL 17 yang dipertingkatkan memudahkan pengekstrakan data daripada medan JSON berdasarkan keadaan yang kompleks.
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()
cur.execute("""
BUAT JADUAL JIKA TIDAK WUJUD large_table (
id KUNCI UTAMA SIRI,
data VARCHAR(255)
);
""")
cur.execute("""
MASUKKAN KE DALAM jadual_besar (data)
PILIH
md5(rawak()::teks)
DARI generate_series(1, 5000000);
""")
conn.commit()
cur.execute("""
BUAT INDEX SECARA SAMPINGAN large_table_data_idx PADA large_table (data);
""")
conn.commit()
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.
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()
cur.execute("""
BUAT JADUAL JIKA TIDAK WUJUD data_pekerja (
id KUNCI UTAMA SIRI,
maklumat JSONB
);
""")
cur.execute("""
MASUKKAN KE DALAM data_pekerja (maklumat)
NILAI
('{"name": "John", "department": "Jualan", "gaji": 5000}'),
('{"name": "Jane", "jabatan": "IT", "gaji": 7000}');
""")
conn.commit()
cur.execute("""
PILIH jsonb_path_query_first(info, '$.department') AS jabatan
DARIPADA data_pekerja
WHERE jsonb_path_exists(info, '$.gaji ? (@ > 6000)');
""")
hasil = cur.fetchall()
untuk baris dalam hasil:
cetak(baris)
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!