Maison  >  Article  >  développement back-end  >  Explorer de nouvelles fonctionnalités dans PostgreSQL avec Python

Explorer de nouvelles fonctionnalités dans PostgreSQL avec Python

王林
王林original
2024-08-25 06:00:38603parcourir

Exploring New Features in PostgreSQL with Python

PostgreSQL 17 apporte une multitude de nouvelles fonctionnalités et améliorations intéressantes qui s'adressent aux développeurs, aux data scientists et aux administrateurs de bases de données. Cet article explorera certains des ajouts et améliorations les plus importants de PostgreSQL 17 et montrera comment utiliser ces fonctionnalités avec Python.

  1. Performances des requêtes améliorées avec le tri incrémentiel L'une des fonctionnalités les plus remarquables de PostgreSQL 17 est l'amélioration de l'algorithme de tri incrémentiel, qui prend désormais en charge un plus large éventail de cas d'utilisation. Le tri incrémentiel peut réduire considérablement le temps nécessaire à l'exécution de requêtes impliquant de grands ensembles de données, en particulier lorsqu'il s'agit de données triées.

Exemple Python : tri incrémentiel avec PostgreSQL 17

Pour utiliser cette fonctionnalité, commençons par configurer une connexion PostgreSQL à l'aide de la bibliothèque psycopg2 de Python :

`importer psycopg2

Connectez-vous à la base de données PostgreSQL

conn = psycopg2.connect(
host="localhost",
base de données="test_db",
utilisateur="postgres",
password="votre_mot de passe"
)

Créer un objet curseur

cur = conn.cursor()

Créer un tableau et insérer des données

cur.execute("""
CRÉER UNE TABLE SI NON EXISTE large_dataset (
id CLÉ PRIMAIRE SÉRIE,
catégorie VARCHAR(50),
valeur INT
);
""")

Insérer des exemples de données

cur.execute("""
INSERT INTO large_dataset (catégorie, valeur)
SÉLECTIONNER
'Catégorie' || (je %10),
aléatoire() * 1000
DE generate_series(1, 1000000) i;
""")

conn.commit()

Utilisation du tri incrémentiel

cur.execute("""
EXPLIQUER ANALYSER
SELECT * FROM large_dataset
COMMANDER PAR catégorie, valeur ;
""")

Récupérer et imprimer le plan de requête

query_plan = cur.fetchall()
pour la ligne dans query_plan :
imprimer(ligne)

Fermez le curseur et la connexion

cur.close()
conn.close()
`

Dans cet exemple, le tri incrémentiel amélioré de PostgreSQL 17 gère efficacement la clause ORDER BY, triant les données de manière incrémentielle et réduisant le temps global d'exécution des requêtes.

  1. Améliorations du chemin JSON PostgreSQL 17 introduit des améliorations à JSONPath, facilitant l'interrogation et la manipulation des données JSON. Ceci est particulièrement utile pour les applications qui s'appuient fortement sur JSON pour l'échange de données.

Exemple Python : utilisation des améliorations JSONPath
`## Reconnectez-vous à la base de données
conn = psycopg2.connect(
host="localhost",
base de données="test_db",
utilisateur="postgres",
password="votre_mot de passe"
)
cur = conn.cursor()

Créer une table avec des données JSON

cur.execute("""
CRÉER UNE TABLE SI N'EXISTE PAS json_data (
id CLÉ PRIMAIRE SÉRIE,
données JSONB
);
""")

Insérer des exemples de données JSON

cur.execute("""
INSÉRER DANS json_data (data)
VALEURS
('{"nom": "Alice", "âge": 30, "compétences": ["Python", "SQL"]}'),
('{"name": "Bob", "age": 25, "skills": ["Java", "C++"]}');
""")

conn.commit()

Interroger les données JSON à l'aide de JSONPath

cur.execute("""
SÉLECTIONNER les données ->> 'nom' Nom AS, données ->> 'âge' AS âge
DE json_data
OÙ les données @ ? '$.compétences ? (@ == "Python")';
""")

Récupérer et imprimer les résultats

résultats = cur.fetchall()
pour la ligne dans les résultats :
imprimer (ligne)

Fermez le curseur et la connexion

cur.close()
conn.close()
`

Ce code montre comment les fonctionnalités JSONPath améliorées de PostgreSQL 17 simplifient l'extraction de données à partir de champs JSON en fonction de conditions complexes.

  1. Parallélisme amélioré pour la création d'index La création d'index dans PostgreSQL 17 est désormais plus efficace grâce à un parallélisme amélioré, permettant une indexation plus rapide sur de grands ensembles de données.

Exemple Python : création d'index parallèle
`## Reconnectez-vous à la base de données
conn = psycopg2.connect(
host="localhost",
base de données="test_db",
utilisateur="postgres",
password="votre_mot de passe"
)
cur = conn.cursor()

Créer une grande table

cur.execute("""
CRÉER UNE TABLE SI NON EXISTE large_table (
id CLÉ PRIMAIRE SÉRIE,
données VARCHAR(255)
);
""")

Insérer un grand nombre de lignes

cur.execute("""
INSERT INTO large_table (données)
SÉLECTIONNER
md5(aléatoire()::text)
DE generate_series(1, 5000000);
""")

conn.commit()

Créer un index avec parallélisme

cur.execute("""
CRÉER UN INDEX CONCURRENTEMENT large_table_data_idx ON large_table (data);
""")

conn.commit()

Fermez le curseur et la connexion

cur.close()
conn.close()
`

Cet exemple présente la capacité améliorée de PostgreSQL 17 à créer des index simultanément à l'aide de plusieurs cœurs de processeur, ce qui est très bénéfique lorsque vous travaillez avec des tables volumineuses.

  1. Fonctions conformes aux normes SQL/JSON PostgreSQL 17 a ajouté la prise en charge de davantage de fonctions conformes à la norme SQL/JSON, améliorant ainsi sa capacité à gérer les données JSON avec une syntaxe davantage conforme à la norme SQL.

Exemple Python : fonctions standard SQL/JSON
`## Reconnectez-vous à la base de données
conn = psycopg2.connect(
host="localhost",
base de données="test_db",
utilisateur="postgres",
password="votre_mot de passe"
)
cur = conn.cursor()

Créer une table avec des données JSON

cur.execute("""
CRÉER UNE TABLE SI NON EXISTE Employee_data (
id CLÉ PRIMAIRE SÉRIE,
infos JSONB
);
""")

Insérer des exemples de données JSON

cur.execute("""
INSÉRER DANS Employee_data (info)
VALEURS
('{"name": "John", "department": "Ventes", "salary": 5000}'),
('{"name": "Jane", "department": "IT", "salary": 7000}');
""")

conn.commit()

Requête à l'aide des fonctions SQL/JSON

cur.execute("""
SELECT jsonb_path_query_first(info, '$.department') AS département
DE Employee_data
OÙ jsonb_path_exists(info, '$.salary ? (@ > 6000)');
""")

Récupérer et imprimer les résultats

résultats = cur.fetchall()
pour la ligne dans les résultats :
imprimer (ligne)

Fermez le curseur et la connexion

cur.close()
conn.close()
`

Dans cet exemple, nous montrons comment utiliser les fonctions standard SQL/JSON pour interroger des données JSON, démontrant ainsi la conformité de PostgreSQL 17 avec les nouvelles normes SQL.

Pour plus d'informations sur PostgreSQL 17 et ses nouvelles fonctionnalités, reportez-vous à la documentation officielle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn