Maison > Article > développement back-end > Explorer de nouvelles fonctionnalités dans PostgreSQL avec 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.
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
conn = psycopg2.connect(
host="localhost",
base de données="test_db",
utilisateur="postgres",
password="votre_mot de passe"
)
cur = conn.cursor()
cur.execute("""
CRÉER UNE TABLE SI NON EXISTE large_dataset (
id CLÉ PRIMAIRE SÉRIE,
catégorie VARCHAR(50),
valeur INT
);
""")
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()
cur.execute("""
EXPLIQUER ANALYSER
SELECT * FROM large_dataset
COMMANDER PAR catégorie, valeur ;
""")
query_plan = cur.fetchall()
pour la ligne dans query_plan :
imprimer(ligne)
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.
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()
cur.execute("""
CRÉER UNE TABLE SI N'EXISTE PAS json_data (
id CLÉ PRIMAIRE SÉRIE,
données JSONB
);
""")
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()
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ésultats = cur.fetchall()
pour la ligne dans les résultats :
imprimer (ligne)
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.
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()
cur.execute("""
CRÉER UNE TABLE SI NON EXISTE large_table (
id CLÉ PRIMAIRE SÉRIE,
données VARCHAR(255)
);
""")
cur.execute("""
INSERT INTO large_table (données)
SÉLECTIONNER
md5(aléatoire()::text)
DE generate_series(1, 5000000);
""")
conn.commit()
cur.execute("""
CRÉER UN INDEX CONCURRENTEMENT large_table_data_idx ON large_table (data);
""")
conn.commit()
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.
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()
cur.execute("""
CRÉER UNE TABLE SI NON EXISTE Employee_data (
id CLÉ PRIMAIRE SÉRIE,
infos JSONB
);
""")
cur.execute("""
INSÉRER DANS Employee_data (info)
VALEURS
('{"name": "John", "department": "Ventes", "salary": 5000}'),
('{"name": "Jane", "department": "IT", "salary": 7000}');
""")
conn.commit()
cur.execute("""
SELECT jsonb_path_query_first(info, '$.department') AS département
DE Employee_data
OÙ jsonb_path_exists(info, '$.salary ? (@ > 6000)');
""")
résultats = cur.fetchall()
pour la ligne dans les résultats :
imprimer (ligne)
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!