使用 Python 探索 PostgreSQL 的新功能

王林
發布: 2024-08-25 06:00:38
原創
532 人瀏覽過

Exploring New Features in PostgreSQL with Python

PostgreSQL 17 帶來了許多令人興奮的新功能和增強功能,以滿足開發人員、資料科學家和資料庫管理員的需求。本文將探討 PostgreSQL 17 中一些最重要的新增功能和改進,並示範如何透過 Python 使用這些功能。

  1. 透過增量排序提高查詢效能 PostgreSQL 17 的突出功能之一是增量排序演算法的增強,該演算法現在支援更廣泛的用例。增量排序可以顯著減少執行涉及大型資料集的查詢所需的時間,尤其是在處理排序資料時。

Python 範例:使用 PostgreSQL 17 進行增量排序

要使用此功能,我們先使用 Python 的 psycopg2 函式庫設定 PostgreSQL 連線:

`導入 psycopg2

連接到 PostgreSQL 資料庫

conn = psycopg2.connect(
主機=“本機”,
資料庫=“test_db”,
使用者=“postgres”,
密碼=“您的密碼”
)

建立遊標對象

cur = conn.cursor()

建立表並插入數據

cur.execute("""
如果大資料集不存在則建立表 (
id 串列主鍵,
類別 VARCHAR(50),
值 INT
);
""")

插入樣本數據

cur.execute("""
INSERT INTO large_dataset(類別,值)
選擇
'類'|| (i % 10),
隨機() * 1000
FROMgenerate_series(1, 1000000) i;
""")

conn.commit()

使用增量排序

cur.execute("""
解釋分析
從大數據集中選擇 *
按類別、數值排序;
""")

取得並列印查詢計劃

query_plan = cur.fetchall()
對於 query_plan 中的行:
印(行)

關閉遊標和連接

cur.close()
conn.close()
`

在此範例中,PostgreSQL 17 改進的增量排序可以有效處理 ORDER BY 子句,對資料進行增量排序並減少整體查詢執行時間。

  1. JSON 路徑增強 PostgreSQL 17 引進了 JSONPath 的增強功能,讓查詢和操作 JSON 資料變得更容易。這對於嚴重依賴 JSON 進行資料交換的應用程式特別有用。

Python 範例:使用 JSONPath 增強功能
`## 重新連接資料庫
conn = psycopg2.connect(
主機=“本機”,
資料庫=“test_db”,
使用者=“postgres”,
密碼=“您的密碼”
)
cur = conn.cursor()

建立包含 JSON 資料的表

cur.execute("""
如果 json_data 不存在則建立表 (
id 串列主鍵,
資料 JSONB
);
""")

插入範例 JSON 數據

cur.execute("""
插入 json_data (資料)
價值觀
('{"姓名": "愛麗絲", "年齡": 30, "技能": ["Python", "SQL"]}'),
('{"姓名": "鮑伯", "年齡": 25, "技能": ["Java", "C++"]}');
""")

conn.commit()

使用 JSONPath 查詢 JSON 數據

cur.execute("""
選擇資料->> 'name' AS名稱,資料->> '年齡' AS 年齡
來自 json_data
數據@在哪裡? '$.技能? (@ == "Python")';
""")

取得並列印結果

結果 = cur.fetchall()
對於結果中的行:
印(行)

關閉遊標和連接

cur.close()
conn.close()
`

此程式碼示範了 PostgreSQL 17 增強的 JSONPath 功能如何簡化根據複雜條件從 JSON 欄位提取資料。

  1. 增強索引建立的平行性 由於改進了並行性,PostgreSQL 17 中的索引建立現在更加高效,可以更快地對大型資料集建立索引。

Python 範例:並行索引建立
`## 重新連接資料庫
conn = psycopg2.connect(
主機=“本機”,
資料庫=“test_db”,
使用者=“postgres”,
密碼=“您的密碼”
)
cur = conn.cursor()

建立一個大表

cur.execute("""
如果不存在則建立表格large_table (
id 串列主鍵,
資料 VARCHAR(255)
);
""")

插入大量行

cur.execute("""
插入大型表(資料)
選擇
md5(隨機()::文字)
FROMgenerate_series(1, 5000000);
""")

conn.commit()

建立具有並行性的索引

cur.execute("""
在large_table(資料)上同時建立索引large_table_data_idx;
""")

conn.commit()

關閉遊標和連接

cur.close()
conn.close()
`

此範例展示了 PostgreSQL 17 改進的使用多個 CPU 核心同時建立索引的能力,這在處理海量表時非常有用。

  1. 符合 SQL/JSON 標準的函數 PostgreSQL 17 增加了對更多 SQL/JSON 標準相容函數的支持,增強了其使用更多 SQL 標準語法處理 JSON 資料的能力。

Python 範例:SQL/JSON 標準函數
`## 重新連接資料庫
conn = psycopg2.connect(
主機=“本機”,
資料庫=“test_db”,
使用者=“postgres”,
密碼=“您的密碼”
)
cur = conn.cursor()

建立包含 JSON 資料的表

cur.execute("""
如果不存在則建立表employee_data (
id 串列主鍵,
資訊 JSONB
);
""")

插入範例 JSON 數據

cur.execute("""
插入員工資料(資訊)
價值觀
('{"姓名": "約翰", "部門": "銷售", "薪水": 5000}'),
('{“姓名”:“簡”,“部門”:“IT”,“工資”:7000}');
""")

conn.commit()

使用 SQL/JSON 函數進行查詢

cur.execute("""
SELECT jsonb_path_query_first(info, '$.department') AS 部門
來自員工資料
哪裡 jsonb_path_exists(info, '$.salary ? (@ > 6000)');
""")

取得並列印結果

結果 = cur.fetchall()
對於結果中的行:
印(行)

關閉遊標和連接

cur.close()
conn.close()
`

在這個範例中,我們示範如何使用 SQL/JSON 標準函數來查詢 JSON 數據,展示了 PostgreSQL 17 對新 SQL 標準的遵循。

有關 PostgreSQL 17 及其新功能的更多信息,請參閱官方文件。

以上是使用 Python 探索 PostgreSQL 的新功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!