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.
--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.
--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.
--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)
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.
"Einführung in Python3 von Bill Lubanovic (veröffentlicht von O'Reilly Japan)"
Recommended Posts