[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)

8.3 Relationale Datenbank

Weitere Informationen finden Sie im vorherigen Artikel.

"Über RDBMS und SQL" https://qiita.com/Taka20200105/items/c58ac4e610954c6d263b

8.3.1 SQL

--SQL fällt in zwei Kategorien. --DDL (Data Definition Language): Erstellen, Löschen, Einschränken und Zulassen von Tabellendatenbanken. --DML (Data Manipulation Language): Verarbeitung wie Einfügen, Auswählen, Aktualisieren und Löschen von Daten

8.3.2 DB-API

--API ist eine Sammlung von Funktionen, die aufgerufen werden müssen, um auf den Dienst zuzugreifen. Um zu verstehen, dass das Öffnen einer API das Erstellen eines einzelnen Fensters und das Verknüpfen mit externer Software bedeutet. Es ist wie Dejima in einem abgelegenen Land. --DB-API ist Pythons Standard-API für den Zugriff auf RDBMS.

Funktion Bedeutung
connect() Öffnen Sie eine Verbindung zur DB. Argumente können angegeben werden.
cursor() Erstellen Sie ein Cursorobjekt, um die Abfrage zu verwalten
execute()Und viele ausführen() Senden Sie einen oder mehrere SQL-Befehle an die Datenbank.
fechone()、fetchmany()、fetch all() Senden Sie einen oder mehrere SQL-Befehle an die Datenbank.

8.3.3 SQLite

--SQLite speichert die DB in einer normalen Datei.


>>> import sqlite3
#enterprise.Erstellen Sie eine Datenbank mit dem Namen db.
>>> conn=sqlite3.connect("enterprise.db")
>>> curs=conn.cursor()
#Erstellen einer Tabelle namens Zoo.
#Primärschlüsselzeichenfolge mit variabler Länge, die als Critter bezeichnet wird
#Eine Folge von Zahlen namens count
#Gleitkomma-Spalte genannt Schäden
>>> curs.execute("""CREATE TABLE zoo (critter VARCHAR(20)PRIMARY KEY,count INT,damages FLOAT)""")
<sqlite3.Cursor object at 0x10b215f80>

#Die folgende Zeichenfolge ist der DML-Befehl
#INSERT INTO zoo VALUES(〜)Fügen Sie eine Zeile mit hinzu.
>>> 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>

#Es kann auch durch die folgenden Additionsmethoden hinzugefügt werden.
#Die drei Fragezeichen geben die geplante Einfügung an.
>>> ins="""INSERT INTO zoo (critter,count,damages) VALUES(?,?,?)"""
>>> curs.execute(ins, ("weasel",1,2000.0))
<sqlite3.Cursor object at 0x10b23d030>

#"SELECT *FROM Tabellenname"Wählen Sie alle Zeilen und Spalten mit aus
>>> curs.execute("SELECT * FROM zoo")
<sqlite3.Cursor object at 0x10b23d030>
#Ergebnisse bekommen
>>> rows=curs.fetchall()
>>> print(rows)
[('duck', 5, 0.0), ('bear', 2, 1000.0), ('weasel', 1, 2000.0)]

#In Zählreihenfolge sortieren.
>>> 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)]

#In Zählreihenfolge und absteigender Reihenfolge.
>>> 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)]

#Auswahl desjenigen mit den größten Schäden.
>>> curs.execute("""SELECT * FROM zoo WHERE damages=(SELECT MAX(damages) FROM zoo)""")<sqlite3.Cursor object at 0x10b23d030>
>>> curs.fetchall()
[('weasel', 1, 2000.0)]

#Sobald Sie die Verbindung und den Cursor geöffnet haben, müssen Sie sie schließen, wenn Sie sie nicht mehr verwenden.
>>> 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

――Mit SQLite ist MySQL ein echter Server.

8.3.5 PostgreSQL

--PostgreSQL ist ein vollwertiges Open-Source-RDBMS, das weiter fortgeschritten ist als MySQL.

8.3.6 SQLAIchemy-Bibliothek

--SQL ist nicht für alle RDBMS gleich. --DB-API kann nur bis zur allgemeinen API-Ebene unterstützen. → Unter den Bibliotheken, die versuchen, die Unterschiede zwischen einzelnen DBs auszugleichen, bietet die datenbankübergreifende Python-Bibliothek SQLAIchemy viel Unterstützung.

  1. Pool von DB-Verbindungen, Ausführung von SQL-Befehlen, Rückverarbeitung der Ergebnisse.
  2. Eine SQL-Ausdruckssprache, die SQL-Anweisungen als Python-Ausdrücke ausdrückt.
  3. ORM-Schicht. Diese Schicht verwendet eine SQL-Darstellungssprache, um Anwendungscode mit RDBMS-Strukturen zu verbinden.

--dialect + driver: // user: password @ host: port / dbname ist das Verbindungszeichenfolgenformat. --dialect: DB-Typ --driver: Der Treiber, den Sie für diese Datenbank verwenden möchten. --user und Passwort: DB-Authentifizierungszeichenfolge --host und port: Speicherort des DB-Servers --dbname: DB auf dem Server, zu dem zuerst eine Verbindung hergestellt werden soll.

8.3.6.1 Motorschicht

--SQLAIchemy ermittelt den erforderlichen Treiber aus der Verbindungszeichenfolge. --Portable zu anderen DB-Typen durch einfaches Ändern der Verbindungszeichenfolge.


>>> import sqlalchemy as sa
#Öffnen Sie eine Datenbank und erstellen Sie einen Speicherbereich.
#Ein Objekt namens ResultProxy wird zurückgegeben.
#Wenn Datenbankname weggelassen wird, wird die DB-Datei im Speicher gespeichert.
#Host in SQlite-Zeichenfolge, port,user,Kein Passwort erforderlich.
>>> conn=sa.create_engine("sqlite://")
#Erstellen Sie eine Zootabelle mit 3 Spalten.
>>> conn.execute("""CREATE TABLE zoo (critter VARCHAR(20) PRIMARY KEY,count INT,damages FLOAT)""")
<sqlalchemy.engine.result.ResultProxy object at 0x108ee3210>
#F3-Daten einfügen.
>>> 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>
#Fordern Sie alle Informationen des Zoos bei der DB an.
>>> 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)

Impressionen

Als ich das erste Mal studierte, dachte ich, dass MySQL und PostgteSQL SQL-Typen sind, aber in diesem Test habe ich festgestellt, dass sie unterschiedlich sind.

Das obige ist RDBMS, keine Sprache. Und viele DBs haben ihre eigenen Dialekte implementiert, und die SQL AIchemy-Bibliothek wurde herausgebracht, um die Unterschiede zwischen diesen Dialekten auszugleichen. Es ist ratsam, anhand der Verbindungszeichenfolge zu beurteilen, ohne den Treiber für jede Datenbank zu installieren.

Verweise

"Einführung in Python3 von Bill Lubanovic (veröffentlicht von O'Reilly Japan)"

Recommended Posts

[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
[Einführung in Python3 Tag 19] Kapitel 8 Datenziele (8.4-8.5)
[Einführung in Python3 Tag 18] Kapitel 8 Datenziele (8.3.6.2 bis 8.3.6.3)
[Einführung in Python3 Tag 13] Kapitel 7 Zeichenfolgen (7.1-7.1.1.1)
[Einführung in Python3 Tag 14] Kapitel 7 Zeichenfolgen (7.1.1.1 bis 7.1.1.4)
[Einführung in Python3 Tag 15] Kapitel 7 Zeichenfolgen (7.1.2-7.1.2.2)
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
[Einführung in Python3, Tag 22] Kapitel 11 Parallele Verarbeitung und Vernetzung (11.1 bis 11.3)
[Einführung in Python3 Tag 11] Kapitel 6 Objekte und Klassen (6.1-6.2)
[Einführung in Python3, Tag 23] Kapitel 12 Werden Sie Paisonista (12.1 bis 12.6)
[Einführung in Python3 Tag 20] Kapitel 9 Enträtseln des Webs (9.1-9.4)
[Einführung in Python3 Tag 8] Kapitel 4 Py Skin: Codestruktur (4.1-4.13)
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
[Einführung in Python3 Tag 1] Programmierung und Python
[Einführung in Python3 Tag 3] Kapitel 2 Py-Komponenten: Numerische Werte, Zeichenfolgen, Variablen (2.2 bis 2.3.6)
[Einführung in Python3 Tag 2] Kapitel 2 Py-Komponenten: Numerische Werte, Zeichenfolgen, Variablen (2.1)
[Einführung in Python3 Tag 4] Kapitel 2 Py-Komponenten: Numerische Werte, Zeichenfolgen, Variablen (2.3.7 bis 2.4)
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
[Einführung in Data Scientist] Grundlagen von Python ♬
[Einführung in Python3 Tag 7] Kapitel 3 Py Tools: Listen, Taples, Wörterbücher, Mengen (3.3-3.8)
[Einführung in Python3 Tag 5] Kapitel 3 Py Tools: Listen, Taples, Wörterbücher, Sets (3.1-3.2.6)
[Einführung in Python3 Tag 10] Kapitel 5 Py's Cosmetic Box: Module, Pakete, Programme (5.4-5.7)
[Einführung in Python3 Tag 9] Kapitel 5 Py's Cosmetic Box: Module, Pakete, Programme (5.1-5.4)
[Einführung in Python3 Tag 6] Kapitel 3 Py-Tool-Liste, Tapple, Wörterbuch, Set (3.2.7-3.2.19)
Einführung in die Python-Sprache
Einführung in OpenCV (Python) - (2)
Einführung in die Überprüfung der Wirksamkeit Kapitel 3 in Python geschrieben
[Einführung in Python] Umgang mit Daten im JSON-Format
Einführung in die Überprüfung der Wirksamkeit Kapitel 2 in Python geschrieben
Python für die Datenanalyse Kapitel 4
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Lesehinweis: Einführung in die Datenanalyse mit Python
Einführung in die serielle Kommunikation [Python]
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Einführung in Python] <Liste> [Bearbeiten: 22.02.2020]
Python für die Datenanalyse Kapitel 2
Einführung in Python (Python-Version APG4b)
Eine Einführung in die Python-Programmierung
Einführung in Python For, While
Python für die Datenanalyse Kapitel 3
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
[Einführung in Python] Kombinieren Sie Nikkei-Durchschnitts- und NY Dow-CSV-Daten
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
[Einführung in die Udemy Python3 + -Anwendung] 58. Lambda
[Einführung in die Udemy Python3 + -Anwendung] 31. Kommentar
[Python] Wie man MP3-Daten fFT
Data Scientist Training Course Kapitel 2 Tag 2
Einführung in die Python Numerical Calculation Library NumPy
Trainieren! !! Einführung in Python Type (Type Hints)
Data Scientist Training Course Kapitel 3 Tag 3
[Einführung in Python] <numpy ndarray> [edit: 2020/02/22]
Data Scientist Training Course Kapitel 4 Tag 1
[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator
Einführung in Python Hands On Teil 1
Data Scientist Training Course Kapitel 3 Tag 1 + 2