Mysql
 sql >> Base de données >  >> RDS >> Mysql

Python SQL – Comment utiliser les bases de données SQLite, MySQL et PostgreSQL avec Python

L'une de mes plus grandes joies en tant que développeur est d'apprendre comment différentes technologies se croisent.

Au fil des ans, j'ai eu l'occasion de travailler avec différents types de logiciels et d'outils. Parmi les nombreux outils que j'ai utilisés, Python et SQL (Structured Query Language) sont deux de mes favoris.

Dans cet article, je vais partager avec vous comment Python et les différentes bases de données SQL interagissent.

Je parlerai des bases de données les plus populaires, SQLite, MySQL et PostgreSQL. J'expliquerai les principales différences de chaque base de données et les cas d'utilisation correspondants. Et je terminerai l'article avec du code Python.

Le code vous montrera comment écrire une requête SQL pour extraire des données d'une base de données PostgreSQL et stocker les données dans une trame de données pandas.

Si vous n'êtes pas familier avec les bases de données relationnelles (RDBMS), je vous suggère de consulter l'article de Sameer sur la terminologie de base du SGBDR ici. Le reste de l'article utilisera des termes référencés dans l'article de Sameer.

SQLite

SQLite est surtout connu pour être une base de données intégrée. Cela signifie que vous n'avez pas besoin d'installer une application supplémentaire ou d'utiliser un serveur séparé pour exécuter la base de données.

Si vous créez un MVP ou si vous n'avez pas besoin d'une tonne d'espace de stockage de données, vous voudrez opter pour une base de données SQLite.

Les avantages sont que vous pouvez vous déplacer plus rapidement avec une base de données SQLite par rapport à MySQL et PostgreSQL. Cela dit, vous serez coincé avec des fonctionnalités limitées. Vous ne pourrez pas personnaliser les fonctionnalités ou ajouter une tonne de fonctionnalités multi-utilisateurs.

MySQL/PostgreSQL

Il existe des différences distinctes entre MySQL et PostgreSQL. Cela dit, compte tenu du contexte de l'article, ils entrent dans une catégorie similaire.

Les deux types de bases de données sont parfaits pour les solutions d'entreprise. Si vous avez besoin d'évoluer rapidement, MySQL et PostgreSQL sont votre meilleur pari. Ils fourniront une infrastructure à long terme et renforceront votre sécurité.

Une autre raison pour laquelle ils sont parfaits pour les entreprises est qu'ils peuvent gérer des activités à haute performance. Les instructions d'insertion, de mise à jour et de sélection plus longues nécessitent une grande puissance de calcul. Vous pourrez écrire ces instructions avec moins de latence que ce que vous donnerait une base de données SQLite.

Pourquoi connecter Python et une base de données SQL ?

Vous vous demandez peut-être "pourquoi devrais-je me soucier de connecter Python et une base de données SQL ?"

Il existe de nombreux cas d'utilisation lorsque quelqu'un souhaite connecter Python à une base de données SQL. Comme je l'ai mentionné plus tôt, vous travaillez peut-être sur une application Web. Dans ce cas, vous devez connecter une base de données SQL afin de pouvoir stocker les données provenant de l'application Web.

Vous travaillez peut-être dans l'ingénierie des données et vous avez besoin de créer un pipeline ETL automatisé. La connexion de Python à une base de données SQL vous permettra d'utiliser Python pour ses capacités d'automatisation. Vous pourrez également communiquer entre différentes sources de données. Vous n'aurez pas à basculer entre différents langages de programmation.

La connexion de Python et d'une base de données SQL rendra également votre travail de science des données plus pratique. Vous pourrez utiliser vos compétences en Python pour manipuler les données d'une base de données SQL. Vous n'aurez pas besoin d'un fichier CSV.

Comment les bases de données Python et SQL se connectent

Les bases de données Python et SQL se connectent via des bibliothèques Python personnalisées. Vous pouvez importer ces bibliothèques dans votre script Python.

Les bibliothèques Python spécifiques à la base de données servent d'instructions supplémentaires. Ces instructions guident votre ordinateur sur la façon dont il peut interagir avec votre base de données SQL. Sinon, votre code Python sera une langue étrangère à la base de données à laquelle vous essayez de vous connecter.

Comment configurer le projet

Prenons une base de données PostgreSQL, AWS Redshift, par exemple. Tout d'abord, vous voudrez importer la bibliothèque psycopg. C'est une bibliothèque Python universelle pour les bases de données PostgreSQL.

#Library for connecting to AWS Redshift
import psycopg

#Library for reading the config file, which is in JSON
import json

#Data manipulation library
import pandas as pd

Vous remarquerez que nous avons également importé les bibliothèques JSON et pandas. Nous avons importé JSON car la création d'un fichier de configuration JSON est un moyen sécurisé de stocker vos informations d'identification de base de données. Nous ne voulons pas que quelqu'un d'autre les regarde !

La bibliothèque pandas vous permettra d'utiliser toutes les capacités statistiques de pandas pour votre script Python. Dans ce cas, la bibliothèque permettra à Python de stocker les données renvoyées par votre requête SQL dans une trame de données.

Ensuite, vous voudrez accéder à votre fichier de configuration. Le json.load() lit le fichier JSON afin que vous puissiez accéder à vos informations d'identification de base de données à l'étape suivante.

config_file = open(r"C:\Users\yourname\config.json")
config = json.load(config_file)

Maintenant que votre script Python peut accéder à votre fichier de configuration JSON, vous devez créer une connexion à la base de données. Vous devrez lire et utiliser les identifiants de votre fichier de configuration :

con = psycopg2.connect(dbname= "db_name", host=config[hostname], port = config["port"],user=config["user_id"], password=config["password_key"])
cur = con.cursor()

Vous venez de créer une connexion à la base de données ! Lorsque vous avez importé la bibliothèque psycopg, vous avez traduit le code Python que vous avez écrit ci-dessus pour parler à la base de données PostgreSQL (AWS Redshift).

En soi, AWS Redshift ne comprendrait pas le code ci-dessus. Mais comme vous avez importé la bibliothèque psycopg, vous parlez maintenant une langue qu'AWS Redshift peut comprendre.

La bonne chose à propos de Python est qu'il possède des bibliothèques pour SQLite, MySQL et PostgreSQL. Vous pourrez facilement intégrer les technologies.

Comment écrire une requête SQL

N'hésitez pas à télécharger les données sur le football européen dans votre base de données PostgreSQL. Je vais utiliser ses données pour cet exemple.

La connexion à la base de données que vous avez créée à la dernière étape vous permet d'écrire du SQL pour ensuite stocker les données dans une structure de données compatible avec Python. Maintenant que vous avez établi une connexion à la base de données, vous pouvez écrire une requête SQL pour commencer à extraire des données :

query = "SELECT *
         FROM League
         JOIN Country ON Country.id = League.country_id;"

Le travail n'est cependant pas encore terminé. Vous devez écrire du code Python supplémentaire qui exécute la requête SQL :

#Runs your SQL query
execute1 = cur.execute(query)
result = cur.fetchall()

Ensuite, vous devez stocker les données renvoyées dans une trame de données pandas :

#Create initial dataframe from SQL data
raw_initial_df = pd.read_sql_query(query, con)
print(raw_initial_df)

Vous devriez obtenir une trame de données pandas (raw_initial_df) qui ressemble à ceci :

Il y a une base de données pour tout le monde

SQLite, MySQL et PostgreSQL ont tous leurs avantages et leurs inconvénients. Celui que vous sélectionnez doit dépendre de votre projet ou des besoins de votre entreprise. Vous devriez également considérer ce dont vous avez besoin maintenant par rapport à plusieurs années plus tard.

La chose importante à retenir est que Python peut s'intégrer à chaque type de base de données.

Cet article effleure la surface de ce qui est possible avec la connexion de Python à une base de données SQL. J'aime voir comment les logiciels se croisent et se combinent pour ajouter une valeur incroyable.

Si vous voulez plus de ce type de contenu, vous pouvez me trouver sur Course to Hire ! Je veux aider plus de gens à apprendre à coder et à décrocher un emploi dans la technologie. N'hésitez pas à nous contacter pour toute question ou si vous voulez simplement dire bonjour :)