Une base de données est une abstraction sur le système de fichiers d’un système d’exploitation qui facilite pour les développeurs la construction d’applications qui créent, lisent, mettent à jour et suppriment des données persistantes.
- Pourquoi les bases de données sont-elles nécessaires ?
- Bases de données relationnelles
- Bases de données les plus courantes pour les applications web Python
- Base de données PostgreSQL
- Base de données MySQL
- Connexion à une base de données avec Python
- Mappage objet-relationnel
- Services tiers de base de données
- Ressources SQL
- Ressources générales sur les bases de données
- Liste de contrôle d’apprentissage des bases de données
Pourquoi les bases de données sont-elles nécessaires ?
À un haut niveau, les applications web stockent des données et les présentent aux utilisateurs de manière utile. Par exemple, Google stocke des données sur les routes et fournit des indications pour se rendre d’un endroit à un autre en conduisant grâce à l’applicationMaps. Les directions de conduite sontpossibles parce que les données sont stockées dans un format structuré.
Les bases de données rendent le stockage structuré fiable et rapide. Elles vous donnent également un cadre mental pour la façon dont les données doivent être enregistrées et récupérées au lieu de devoir déterminer ce qu’il faut faire avec les données chaque fois que vous construisez une nouvelle application.
Bases de données relationnelles
L’abstraction de stockage de base de données la plus couramment utilisée dans le développement web Pythonmentis des ensembles de tables relationnelles. Les abstractions de stockage alternatives sont expliquées sur la page NoSQL.
Les bases de données relationnelles stockent les données dans une série de tables. Les interconnexions entre les tables sont spécifiées comme des clés étrangères. Une clé étrangère est une référence unique d’une ligne dans une table relationnelle à une autre ligne dans une table, qui peut être la même table mais qui est le plus souvent une table différente.
Les implémentations de stockage des bases de données varient en complexité. SQLite, une base de données incluse dans Python, crée un seul fichier pour toutes les données par base de données.D’autres bases de données telles que PostgreSQL, MySQL, Oracle et Microsoft SQL Server ont des schémas de persistance plus compliqués tout en offrant des fonctionnalités avancées supplémentaires qui sont utiles pour le stockage des données des applications Web. Ces fonctionnalités avancées comprennent, sans s’y limiter, les éléments suivants :
- la réplication des données entre une base de données maître et une ou plusieurs instances esclaves en lecture seule
- des types de colonnes avancés qui peuvent stocker efficacement des données semi-structurées telles que JavaScript Object Notation (JSON)
- le sharding, qui permet la mise à l’échelle horizontale de plusieurs bases de données qui servent chacune d’instances de lecture-écriture au prix d’une latence dans la cohérence des données
- surveillance, statistiques et autres informations d’exécution utiles pour les schémas et les tables de la base de données
Typiquement, les applications web commencent avec une seule instance de base de données telle que PostgreSQL avec un schéma simple. Au fil du temps, le schéma des bases de données évolue vers une structure plus complexe en utilisant des migrations de schémas et des fonctionnalités avancées telles que la réplication, le sharding et la surveillance deviennent plus utiles à mesure que l’utilisation de la base de données augmente en fonction des besoins des utilisateurs de l’application.
Bases de données les plus courantes pour les applications web Python
PostgreSQL et MySQL sont deux des bases de données open sourced les plus courantes pour stocker les données des applications web Python.
SQLite est une base de données qui est stockée dans un seul fichier sur le disque. SQLite est intégré dans Python mais n’est construit que pour l’accèspar une seule connexion à la fois. Il est donc fortement recommandé de ne pas exécuter une application web de production avec SQLite.
Base de données PostgreSQL
PostgreSQL est la base de données relationnelle recommandée pour travailler avec des applications web Python. L’ensemble des fonctionnalités, le développement actif et la stabilité de PostgreSQL contribuent à son utilisation comme backend pour des millions d’applications vivant sur le Web aujourd’hui.
En savoir plus sur l’utilisation de PostgreSQL avec Python sur la pagePostgreSQL.
Base de données MySQL
MySQL est une autre implémentation de base de données open source viable pour les applications Python. MySQL a une courbe d’apprentissage initiale légèrement plus facile quePostgreSQL mais n’est pas aussi riche en fonctionnalités.
Découvrez les applications Python avec un support MySQL sur la page dédiée àMySQL.
Connexion à une base de données avec Python
Pour travailler avec une base de données relationnelle en utilisant Python, vous devez utiliser une bibliothèque de code. Les bibliothèques les plus courantes pour les bases de données relationnelles sont:
-
psycopg2(code source)pour PostgreSQL.
-
MySQLdb(code source)pour MySQL. Notez que le développement de ce pilote est principalement gelé, donc l’évaluation de pilotes alternatifs est sage si vous utilisez MySQL comme backend.
-
cx_Oracle pourOracle Database (code source).Oracle a déplacé le code source du piloteiropen de SourceForge à GitHub en 2017.
Le support de SQLite est intégré dans Python 2.7+ et donc une bibliothèque séparée n’est pas nécessaire. Il suffit d' »importer sqlite3″ pour commencer à s’interfacer avec la base de données basée sur un seul fichier.
Mappage objet-relationnel
Les mappeurs objet-relationnel (ORM) permettent aux développeurs d’accéder aux données à partir d’un backend en écrivant du code Python au lieu de requêtes SQL. Chaque framework de webapplication gère l’intégration des ORM de manière différente. Il y a san page entière sur le mappage objet-relationnel(ORMs) que vous devriez lire pour obtenir une poignée sur ce sujet.
Services tiers de base de données
De nombreuses entreprises exécutent des serveurs de base de données évolutifs comme un service hébergé.Les bases de données hébergées peuvent souvent fournir des sauvegardes et des restaurations automatisées, des configurations de sécurité renforcées et une mise à l’échelle verticale facile, selon le fournisseur.
-
Amazon Relational Database Service (RDS)fournit des instances MySQL et PostgreSQL préconfigurées. Les instances peuvent être mises à l’échelle pour des configurations plus grandes ou plus petites en fonction des besoins de stockage et de performance.
-
Google Cloud SQL est un service avec des instances MySQL gérées, sauvegardées, répliquées et auto-patchées. CloudSQL s’intègre à Google App Engine mais peut également être utilisé indépendamment.
-
BitCan fournit des bases de données hébergées MySQL et MongoDB avec des services de sauvegarde étendus.
-
ElephantSQL est une société de logiciel-service qui héberge des bases de données PostgreSQL et gère la configuration du serveur, les sauvegardes et les connexions de données au-dessus des instances Amazon Web Services.
Ressources SQL
Vous pouvez prévoir d’utiliser un mappeur objet-relationnel (ORM)comme principal moyen d’interagir avec une base de données, mais vous devez tout de même apprendre les bases de SQL pour créer des schémas et comprendre le code SQLgénéré par l’ORM. Les ressources suivantes peuvent vous aider à vous mettre à niveau sur SQL si vous ne l’avez jamais utilisé auparavant.
-
Select Star SQL est un livre interactif pour apprendre SQL. Hautement recommandé même si vous pensez que vous ne travaillerez qu’avec un mapper objet-relationnel sur vos projets car vous ne savez jamais quand vous aurez besoin de descendre dans SQL pour améliorer la lenteur des performances d’une requête générée.
-
Un guide de SQL pour les débutants fait un bon travail d’explication des principaux mots-clés utilisés dans les instructions SQL tels que
SELECT
,WHERE
,FROM
,UPDATE
etDELETE
. -
SQL Tutorial enseigne les bases du SQL qui peuvent être utilisées dans toutes les principales implémentations de bases de données relationnelles.
-
La vie d’une requête SQLexplique ce qui se passe à la fois conceptuellement et techniquement dans une base de données lorsqu’une requête SQL est exécutée. L’auteur utilisePostgreSQL comme base de données d’exemple et la syntaxe SQL tout au long du post.
-
Un guide complet, probablement incomplet, des différentes façons de JOINER des tables en SQLexplique l’une des parties les plus délicates de l’écriture d’instructions SQL qui relient une ou plusieurs tables : le
JOIN
. -
Writing better SQLest un petit guide de style de code pour rendre vos requêtes plus faciles à lire.
-
SQL Intermediate est un tutoriel au-delà des bases qui utilise les données ouvertes duUS Consumer Financial Protection Bureau comme exemples pour compter, interroger et utiliser les vues dans PostgreSQL.
Ressources générales sur les bases de données
-
Comment fonctionne une base de données relationnelle… est un post long détaillé sur le tri, la recherche, la fusion et d’autres opérations que nous prenons souvent pour acquis lorsque nous utilisons une base de données relationnelle établie telle que PostgreSQL.
-
Databases 101 donne un excellent aperçu des principaux concepts de base de données relationnelle qui est pertinent même pour les non-développeurs en tant qu’introduction.
-
Cinq erreurs que les débutants font lorsqu’ils travaillent avec des bases de donnéesexplique pourquoi vous ne devriez pas stocker des images dans des bases de données ainsi que pourquoi être prudent avec la façon dont vous normalisez votre schéma.
-
DB-Engines classe les systèmes de gestion de bases de données les plus populaires.
-
DB Weekly est un récapitulatif hebdomadaire d’articles et de ressources générales sur les bases de données.
-
Designing Highly Scalable Database Architecturescovers horizontal and vertical scaling, replication and caching in relational database architectures.
-
Online migrations at scaleest une excellente lecture sur la décomposition de la complexité d’une schémamigration de base de données pour une base de données opérationnelle. L’approche utilisée par l’équipe de l’auteur était un modèle d’écriture double en 4 étapes pour faire évoluer soigneusement la façon dont les données pour les abonnements étaient stockées afin qu’elles puissent passer à un nouveau modèle de stockage plus efficace.
-
Une base de données unique ne convient à personneexplique la raison spécifique d’Amazon Web Services pour avoir autant de types de bases de données relationnelles et non relationnelles sur sa plate-forme, mais l’article est également un bon aperçu des différents modèles de base de données et de leurs cas d’utilisation.
-
SQL a 43 ans – voici 8 raisons pour lesquelles nous l’utilisons encore aujourd’hui énumère les raisons pour lesquelles SQL est couramment utilisé par presque tous les développeurs alors même que lelangage approche de son cinquantième anniversaire.
-
Les clés SQL en profondeurfournit une excellente explication de ce que sont les clés primaires et comment vous devez les utiliser.
-
Explorer un ensemble de données en SQLest un bon exemple de la façon dont SQL seul peut être utilisé pour l’analyse des données. Ce tutoriel utilise les données Spotifypour montrer comment extraire ce que vous cherchez à apprendre d’un ensemble de données.
-
Les stratégies de test d’intégration de bases de donnéescouvrent un sujet difficile qui se présente sur chaque projet du monde réel.
-
GitLab a fourni son postmortem d’une panne de base de données le 31 janvier comme un moyen d’être transparent pour les clients et d’aider d’autres équipes de développement à apprendre comment ils ont foiré leurs systèmes de base de données puis ont trouvé un moyen de récupérer.
-
Asynchronous Python and Databasesest un article approfondi couvrant pourquoi de nombreux pilotes de base de données Python ne peuvent pas être utilisés sans modification en raison des différences entre les modèles d’événements bloquants et asynchrones. Cela vaut définitivement la peine d’être lu si vous utilisez desWebSockets via Tornado ou gevent.
-
PostgreSQL vs MS SQL Server est unperspective sur les différences entre les deux serveurs de base de données d’un analyste de données.
Liste de contrôle d’apprentissage des bases de données
-
Installer PostgreSQL sur votre serveur. En supposant que vous êtes allé avec Ubuntu run
sudo apt-get install postgresql
. -
Vérifiez que la bibliothèque psycopg2 est dans les dépendances de votreapplication.
-
Configurez votre application web pour vous connecter à l’instance PostgreSQL.
-
Créer des modèles dans votre ORM, soit avec l’ORM intégré de Django ouSQLAlchemy avec Flask.
-
Construisez vos tables de base de données ou synchronisez les modèles ORM avec l’instance PostgreSQL, si vous utilisez un ORM.
-
Commencez à créer, lire, mettre à jour et supprimer des données dans la base de données depuis votre application web.