SQL-Datenbanken speichern Datensammlungen in Zeilen und Spalten. Sie können die Daten in einem relationalen Datenbankverwaltungssystem (RDBMS) mithilfe der SQL-Sprache abrufen und aktualisieren. Von den vielen verfügbaren SQL-Datenbanken sind die beliebtesten MySQL, PostgreSQL, Microsoft SQL Server und SQLite.
Die Funktionalität für die Interaktion mit Datenbanken in Go befindet sich im Paket database/sql, das Teil der Standardbibliothek ist.
Das Paket database/sql interagiert mit SQL-Datenbanken über Treiber. Sie können ein geeignetes Treiberpaket für Ihr RDBMS importieren und es verwenden, um mit der Datenbank zu interagieren.
Erste Schritte mit SQL-Datenbanken in Go
Das Paket database/sql ist eine generische Schnittstelle zu relationalen Datenbanken. Um mit einem bestimmten Datenbankserver zu arbeiten, müssen Sie einen der vielen verfügbaren Treiber verwenden.
Glücklicherweise müssen Sie sich über den Treiber hinaus keine Gedanken über spezifische Implementierungen machen. Das Paket database/sql behandelt Datenbankoperationen unabhängig von dem Server, mit dem Sie sich verbinden.
Einige der beliebtesten Go-Datenbanktreiber sind:
- Go-SQL-Treiber (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- MSSQL-DB (Microsoft SQL-Server)
Du kannst den... benutzen LibHunt-Treiberliste Äquivalente zu finden andere Datenbanktypen. Die Liste zeigt auch die relative Beliebtheit jedes Datenbanksystems:
Installieren und Importieren von Go-Datenbanktreibern
Nachdem Sie einen Go-Arbeitsbereich erstellt und eine Go-Moduldatei initialisiert haben, installieren Sie den Treiber, der zu Ihrem Datenbanksystem passt. Führen Sie beispielsweise einen der folgenden Befehle in Ihrem Arbeitsbereichsverzeichnis aus, um den MySQL- oder SQLite-Treiber zu installieren:
Gehen Sie zu get -u github.com/go-sql-driver/mysql
Rufen Sie github.com/mattn/go-sqlite3 auf
Nachdem Sie Ihren Treiber installiert haben, importieren Sie ihn für Nebeneffekte, indem Sie dem Paket einen Unterstrich voranstellen. Um beispielsweise den MySQL-Treiber zusammen mit dem Paket database/sql zu importieren:
importieren (
"Datenbank/sql"
_ "github.com/gehen-sql-treiber/mysql"
)
Indem Sie das Treiberpaket für Nebenwirkungen importieren, können Sie es verwenden, um eine Verbindung zur Datenbank herzustellen und Vorgänge auf ihr auszuführen.
Herstellen einer Verbindung zu einer SQL-Datenbank mit Go
Nachdem Sie die Datenbanktreiber importiert haben, können Sie eine Datenbankverbindung mit dem erstellen Offen Methode der Datenbank/sql Paket. Diese Methode nimmt den Namen des Treibers und den Pfad zur Datenbank (für SQLite) oder eine Verbindungszeichenfolge (für MySQL). Verwenden Sie beispielsweise eines der folgenden:
db, err := sql. Open("sqlite3", "models/testdb.db") // SQLite
db, err := sql. Open("mysql", "user: password@/dbname") // MySQL
Nachdem Sie versucht haben, die Verbindung zu öffnen, denken Sie daran, nach einem Fehler zu suchen:
wenn äh != Null {
Protokoll. Fatalln (äh)
}
Abhängig von Ihrem Datenbanksystem wird die Offen -Methode kann einen Fehler zurückgeben, wenn die Datenbank nicht vorhanden ist. Sobald Sie eine Verbindung zu einer Datenbank hergestellt haben, können Sie mithilfe der Datenbankinstanz Abfragen ausführen und Anweisungen vorbereiten Offen kehrt zurück.
Ausführen von SQL-Befehlen
Du kannst SQL-Befehle ausführen Verwendung der Vorbereiten Methode Ihrer Datenbankinstanz. Das Vorbereiten -Methode nimmt einen SQL-Befehl auf und gibt eine vorbereitete Anweisung zur Ausführung zusammen mit einem Fehlerobjekt zurück. Wenn Sie beispielsweise eine neue Tabelle erstellen möchten:
Befehl, Fehler := db. Prepare("CREATE TABLE IF NOT EXISTS Login (Benutzername TEXT, Passwort TEXT)")
Die obige Anweisung erstellt eine Tabelle mit dem Namen Anmeldung, falls noch nicht vorhanden. Die neue Tabelle hat benannte Felder Nutzername und Passwort, jeweils vom Typ TEXT.
Wenn Sie Werte aus Ihrem Programm in Ihre Abfragen einfügen, können Sie die Fragezeichen-Notation (?) verwenden, um Platzhalter zu kennzeichnen, und dann die Parameter beim Ausführen der Anweisung übergeben.
Befehl, Fehler := db. Prepare("INSERT INTO login (username, password) values(?,?)")
Sobald Sie eine vorbereitete Anweisung erstellt haben, können Sie sie mit ihrer ausführen Ausf Methode. Mit dieser Methode können Sie Parameterwerte aus Ihrem Programm übergeben:
exec, err := Befehl. Ausführen (Wert1, Wert2)
wenn äh != Null {
Rückkehr
}
Der erste Wert, der Ausführen() return ist das Ergebnis der SQL-Abfrage in Ihrer Datenbank. Mit diesem Abfrageergebnis können Sie die Anzahl der betroffenen Zeilen oder die zuletzt eingefügte ID überprüfen:
betroffen, err := exec. Betroffene Zeilen ()
wenn äh != Null {
Rückkehr
}fmt. Println (betroffen)
id, err := ausführen. LastInsertId()
wenn äh != Null {
Rückkehr
}
fmt. Println (ID)
Abrufen von Abfrageergebnissen
Mit dem Paket database/sql können Sie Datenbankergebnisse mithilfe von abfragen Anfrage Methode einer Datenbankinstanz:
Zeilen, err := db. Abfrage ("SELECT * FROM Benutzer")
wenn äh != Null {
Rückkehr
}
Das Anfrage Methode gibt a zurück Reihen struct, die Sie verwenden können, um mit Ihrer Ergebnismenge zu arbeiten. Sie können zum Beispiel die verwenden Nächste -Methode Ihrer Zeileninstanz, um darüber zu iterieren und mit einzelnen Zeilen zu arbeiten:
Var Benutzername Passwort Schnur
zum Reihen. Nächste() {
err := Zeilen. Scan(&Benutzername, &Passwort)wenn äh != Null {
Protokoll. Fatalln (äh)
}
fmt. Println (Benutzername, Passwort)
}
Im obigen Beispiel zwei String-Variablen—Nutzername und Passwort– stellt jeden Spaltenwert dar. Das Scan -Methode dekodiert die aktuelle Zeile in diese entsprechenden Variablen.
SQL-Datenbanken sind immer praktisch
Die Verwendung von Datenbanken in Go ist mit dem database/sql-Paket unkompliziert. Sie können damit problemlos SQL-Befehle in Go abfragen und ausführen.
SQL-Datenbanken bilden den Kern vieler Anwendungen, insbesondere solcher, die sich mit großen oder komplexen Datensätzen befassen. Sie können Datenbanken wie die In-Memory-SQLite-Datenbank für Ihre einfachen Projekte wie Web-Scraping und das Erstellen von Bots verwenden.
Gute Kenntnisse von SQL und Datenbankverwaltungssystemen sind unerlässlich, um sie in Ihren Programmen effizient einzusetzen. Wenn Sie sich jedoch entscheiden, SQL nicht zu lernen, können Sie lernen, wie Sie ORMs verwenden, um mit SQL-Datenbanken in Go zu interagieren.