[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.3-8.3.6.1)

8.3 Base de données relationnelle

Voir l'article précédent pour plus de détails.

"À propos du SGBDR et de SQL" https://qiita.com/Taka20200105/items/c58ac4e610954c6d263b

8.3.1 SQL

--SQL se divise en deux catégories. --DDL (Data Definition Language): créer, supprimer, contraindre et autoriser des bases de données de table. --DML (Data Manipulation Language): traitement tel que l'insertion, la sélection, la mise à jour et la suppression de données

8.3.2 DB-API

--API est un ensemble de fonctions à appeler pour accéder au service. Comprendre qu'ouvrir une API signifie créer une fenêtre unique et la relier à un logiciel externe. C'est comme Dejima dans un pays isolé. --DB-API est l'API standard de Python pour accéder au SGBDR.

une fonction sens
connect() Ouvrez une connexion à la base de données. Des arguments peuvent être spécifiés.
cursor() Créer un objet curseur pour gérer la requête
execute()Et exécutez beaucoup() Envoyez une ou plusieurs commandes SQL à la base de données.
fechone()、fetchmany()、fetch all() Envoyez une ou plusieurs commandes SQL à la base de données.

8.3.3 SQLite

--SQLite stocke la base de données dans un fichier normal.


>>> import sqlite3
#enterprise.Créez une base de données nommée db.
>>> conn=sqlite3.connect("enterprise.db")
>>> curs=conn.cursor()
#Création d'une table appelée zoo.
#Chaîne de clé primaire de chaîne de longueur variable appelée critter
#Une chaîne de nombres appelée count
#Colonne à virgule flottante appelée dommages
>>> curs.execute("""CREATE TABLE zoo (critter VARCHAR(20)PRIMARY KEY,count INT,damages FLOAT)""")
<sqlite3.Cursor object at 0x10b215f80>

#La chaîne de caractères ci-dessous exécuter est la commande DML
#INSERT INTO zoo VALUES(〜)Ajoutez une ligne avec.
>>> curs.execute("""INSERT INTO zoo VALUES("duck",5,0.0)""")
<sqlite3.Cursor object at 0x10b23d030>
>>> curs.execute("""INSERT INTO zoo VALUES("bear",2,1000.0)""")
<sqlite3.Cursor object at 0x10b23d030>

#Il peut également être ajouté par les méthodes d'addition suivantes.
#Trois points d'interrogation indiquent l'insertion prévue.
>>> ins="""INSERT INTO zoo (critter,count,damages) VALUES(?,?,?)"""
>>> curs.execute(ins, ("weasel",1,2000.0))
<sqlite3.Cursor object at 0x10b23d030>

#"SELECT *FROM nom de la table"Sélectionnez toutes les lignes et colonnes avec
>>> curs.execute("SELECT * FROM zoo")
<sqlite3.Cursor object at 0x10b23d030>
#Obtenir des résultats
>>> rows=curs.fetchall()
>>> print(rows)
[('duck', 5, 0.0), ('bear', 2, 1000.0), ('weasel', 1, 2000.0)]

#Trier par ordre de décompte.
>>> curs.execute("SELECT * FROM zoo ORDER BY count")
<sqlite3.Cursor object at 0x10b23d030>
>>> curs.fetchall()
[('weasel', 1, 2000.0), ('bear', 2, 1000.0), ('duck', 5, 0.0)]

#Dans l'ordre de décompte et dans l'ordre décroissant.
>>> curs.execute("SELECT * FROM zoo ORDER BY count DESC")
<sqlite3.Cursor object at 0x10b23d030>
>>> curs.fetchall()
[('duck', 5, 0.0), ('bear', 2, 1000.0), ('weasel', 1, 2000.0)]

#Sélection de celui avec les plus gros dégâts.
>>> curs.execute("""SELECT * FROM zoo WHERE damages=(SELECT MAX(damages) FROM zoo)""")<sqlite3.Cursor object at 0x10b23d030>
>>> curs.fetchall()
[('weasel', 1, 2000.0)]

#Une fois que vous avez ouvert la connexion et le curseur, vous devez le fermer lorsque vous avez fini de l'utiliser.
>>> curs.close
<built-in method close of sqlite3.Cursor object at 0x10b23d030>
>>> conn.close
<built-in method close of sqlite3.Connection object at 0x10b1d4ab0>

8.3.4 MySQL

―― Contrairement à SQLite, MySQL est un vrai serveur.

8.3.5 PostgreSQL

--PostgreSQL est un SGBDR open source à part entière qui est plus avancé que MySQL.

8.3.6 Bibliothèque SQLAIchemy

--SQL n'est pas le même pour tous les SGBDR. --DB-API ne peut prendre en charge que jusqu'au niveau API commun. → Parmi les bibliothèques qui tentent de combler les différences entre les bases de données individuelles, la bibliothèque Python inter-bases de données SQLAIchemy a beaucoup de support.

  1. Pool de connexions DB, exécution de commandes SQL, traitement de retour des résultats.
  2. Un langage d'expression SQL qui exprime des instructions SQL sous forme d'expressions Python.
  3. Couche ORM. Cette couche utilise un langage de représentation SQL pour connecter le code d'application aux structures SGBDR.

--dialect + driver: // user: password @ host: port / dbname est le format de la chaîne de connexion. --dialect: type de base de données --driver: le pilote que vous souhaitez utiliser pour cette base de données. --user et mot de passe: chaîne d'authentification DB --host et port: emplacement du serveur de base de données --dbname: DB sur le serveur auquel se connecter en premier.

8.3.6.1 Couche moteur

--SQLAIchemy déterminera le pilote requis à partir de la chaîne de connexion. --Portable vers d'autres types de DB simplement en modifiant la chaîne de connexion.


>>> import sqlalchemy as sa
#Ouvrez une base de données et créez une zone de stockage.
#Un objet appelé ResultProxy est renvoyé.
#Si dbname est omis, le fichier DB est stocké dans la mémoire.
#Hôte dans la chaîne SQlite, port,user,Aucun mot de passe requis.
>>> conn=sa.create_engine("sqlite://")
#Créez une table de zoo avec 3 colonnes.
>>> conn.execute("""CREATE TABLE zoo (critter VARCHAR(20) PRIMARY KEY,count INT,damages FLOAT)""")
<sqlalchemy.engine.result.ResultProxy object at 0x108ee3210>
#Insérez les données f3.
>>> ins="""INSERT INTO zoo (critter,count,damages) VALUES(?,?,?)"""
>>> conn.execute(ins,"duck",10,0.0)
<sqlalchemy.engine.result.ResultProxy object at 0x108ee3290>
>>> conn.execute(ins,"bear",2,1000.0)
<sqlalchemy.engine.result.ResultProxy object at 0x108ee3350>
>>> conn.execute(ins,"weasel",1,2000.0)
<sqlalchemy.engine.result.ResultProxy object at 0x108ee32d0>
#Demandez toutes les informations du zoo à DB.
>>> rows=conn.execute("SELECT*FROM zoo")
>>> print(rows)
<sqlalchemy.engine.result.ResultProxy object at 0x108ee3110>
>>> for row in rows:
...     print(row)
... 
('duck', 10, 0.0)
('bear', 2, 1000.0)
('weasel', 1, 2000.0)

Impressions

Quand j'ai étudié pour la première fois, je pensais que MySQL et PostgteSQL étaient des types SQL, mais dans cette revue, j'ai remarqué qu'ils étaient différents.

Ce qui précède est un SGBDR, pas un langage. Et de nombreuses bases de données ont leurs propres dialectes implémentés, et la bibliothèque SQL AIchemy est sortie pour combler les différences entre ces dialectes. Il est sage de juger par la chaîne de caractères de connexion sans installer le pilote pour chaque DB.

Les références

"Introduction à Python3 par Bill Lubanovic (publié par O'Reilly Japon)"

Recommended Posts

[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.3-8.3.6.1)
[Introduction à Python3 Jour 19] Chapitre 8 Destinations de données (8.4-8.5)
[Introduction à Python3 Day 18] Chapitre 8 Destinations de données (8.3.6.2 à 8.3.6.3)
[Introduction à Python3 Jour 13] Chapitre 7 Chaînes de caractères (7.1-7.1.1.1)
[Introduction à Python3 Jour 14] Chapitre 7 Chaînes de caractères (7.1.1.1 à 7.1.1.4)
[Introduction à Python3 Jour 15] Chapitre 7 Chaînes de caractères (7.1.2-7.1.2.2)
[Introduction à Python3 Day 21] Chapitre 10 Système (10.1 à 10.5)
[Introduction à Python3 Jour 12] Chapitre 6 Objets et classes (6.3-6.15)
[Introduction à Python3, jour 22] Chapitre 11 Traitement parallèle et mise en réseau (11.1 à 11.3)
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
[Introduction à Python3, Jour 23] Chapitre 12 Devenir un Paisonista (12.1 à 12.6)
[Introduction à Python3 Jour 20] Chapitre 9 Démêler le Web (9.1-9.4)
[Introduction à Python3 Jour 8] Chapitre 4 Py Skin: Structure du code (4.1-4.13)
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-
[Introduction à Python3 Jour 1] Programmation et Python
[Introduction à Python3 Jour 3] Chapitre 2 Composants Py: valeurs numériques, chaînes de caractères, variables (2.2 à 2.3.6)
[Introduction à Python3 Jour 2] Chapitre 2 Composants Py: valeurs numériques, chaînes de caractères, variables (2.1)
[Introduction à Python3 Jour 4] Chapitre 2 Composants Py: valeurs numériques, chaînes de caractères, variables (2.3.7 à 2.4)
Introduction à la vérification de l'efficacité Chapitre 1 écrit en Python
[Introduction au Data Scientist] Bases de Python ♬
[Introduction à Python3 Jour 7] Chapitre 3 Outils Py: Listes, Taples, Dictionnaires, Ensembles (3.3-3.8)
[Introduction à Python3 Jour 5] Chapitre 3 Outils Py: listes, taples, dictionnaires, ensembles (3.1-3.2.6)
[Introduction à Python3 Jour 10] Chapitre 5 Boîte cosmétique de Py: modules, packages, programmes (5.4-5.7)
[Introduction à Python3 Jour 9] Chapitre 5 Boîte cosmétique de Py: modules, packages, programmes (5.1-5.4)
[Introduction à Python3 Jour 6] Chapitre 3 Liste des outils Py, tapple, dictionnaire, set (3.2.7-3.2.19)
Introduction au langage Python
Introduction à OpenCV (python) - (2)
Introduction à la vérification de l'efficacité Chapitre 3 écrit en Python
[Introduction à Python] Comment gérer les données au format JSON
Introduction à la vérification de l'efficacité Chapitre 2 écrit en Python
Python pour l'analyse des données Chapitre 4
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
Note de lecture: Introduction à l'analyse de données avec Python
Introduction à la communication série [Python]
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Introduction à Python] <liste> [modifier le 22/02/2020]
Python pour l'analyse des données Chapitre 2
Introduction à Python (version Python APG4b)
Une introduction à la programmation Python
Introduction à Python pour, pendant
Python pour l'analyse des données Chapitre 3
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
20200329_Introduction à l'analyse de données avec Python 2nd Edition Personal Summary
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
[Introduction à Python] Combinaison des données Nikkei Average et NY Dow CSV
[Python] Introduction à la création de graphiques à l'aide de données de virus corona [Pour les débutants]
[Introduction à Python] Comment obtenir des données avec la fonction listdir
[Présentation de l'application Udemy Python3 +] 58. Lambda
[Présentation de l'application Udemy Python3 +] 31. Commentaire
[Python] Comment FFT des données mp3
Cours de formation Data Scientist Chapitre 2 Jour 2
Introduction à la bibliothèque de calcul numérique Python NumPy
Entraine toi! !! Introduction au type Python (conseils de type)
Cours de formation Data Scientist Chapitre 3 Jour 3
[Introduction à Python] <numpy ndarray> [modifier le 22/02/2020]
Cours de formation Data Scientist Chapitre 4 Jour 1
[Présentation de l'application Udemy Python3 +] 57. Décorateur
Introduction à Python Hands On Partie 1
Cours de formation Data Scientist Chapitre 3 Jour 1 + 2