Heim  >  Artikel  >  Backend-Entwicklung  >  golang MySQL-Abfrage

golang MySQL-Abfrage

WBOY
WBOYOriginal
2023-05-19 13:27:09684Durchsuche

Golang ist eine immer beliebter werdende Programmiersprache, die sich durch die Verarbeitung großer Datenmengen und eine hohe Parallelitätsleistung auszeichnet. Gleichzeitig ist MySQL als beliebtes relationales Datenbanksystem sehr gut mit Golang kompatibel. In diesem Artikel erfahren Sie, wie Sie MySQL-Abfragen in Golang ausführen.

  1. Installieren Sie den MySQL-Treiber

Bevor Sie Golang zum Abfragen von MySQL verwenden, müssen Sie zuerst den MySQL-Treiber installieren. Der am häufigsten verwendete MySQL-Treiber in Golang ist „mysql“, der mit dem folgenden Befehl installiert werden kann:

go get -u github.com/go-sql-driver/mysql

Dieser Befehl installiert den MySQL-Treiber in der Golang-Umgebung.

  1. Mit MySQL-Datenbank verbinden

Bevor Sie eine MySQL-Abfrage durchführen, müssen Sie zunächst eine Verbindung mit der Datenbank herstellen. Sie können den folgenden Code verwenden, um eine Verbindung mit der MySQL-Datenbank herzustellen:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()
}

Im obigen Code verwenden wir die Funktion „sql.Open“, um die MySQL-Datenbank von Golang aus zu öffnen, mit den folgenden Parametern:

  • Der erste Parameter: Geben Sie den verwendeten Datenbanktreiber an, hier ist „mysql“
  • Zweiter Parameter: Geben Sie die Verbindungsinformationen der MySQL-Datenbank im Format „Benutzername:Passwort@tcp(host:port)/Datenbankname“

    • Benutzername an : Der Benutzername der MySQL-Datenbank
    • Passwort: Das Passwort der MySQL-Datenbank
    • Host:Port: Der Host und die Portnummer der MySQL-Datenbank
    • Datenbankname: Der Name der MySQL-Datenbank

Nach der Ausführung Bei der Abfrage müssen Sie auch die Anweisung „db.Close()“ übergeben, um die Verbindung zu schließen.

  1. SELECT-Abfrage ausführen

Nach dem Herstellen der Verbindung können Sie Golang verwenden, um eine MySQL-Abfrage auszuführen. Das Folgende ist ein einfacher Beispielcode zum Ausführen der SELECT-Abfrageanweisung:

rows, err := db.Query("SELECT name, age FROM users WHERE age > ?", 20)
if err != nil {
    panic(err.Error())
}
defer rows.Close()

for rows.Next() {
    var name string
    var age int
    err = rows.Scan(&name, &age)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(name, age)
}
  • Die Funktion „db.Query“ akzeptiert die SQL-Abfrageanweisung und ihre Parameter und gibt die Ergebnismenge zurück.
  • „rows.Next“ durchläuft jede Zeile der Daten scannt die Funktion „rows .Scan“ jede Datenzeile in eine Variable
  • Nach Abschluss der Abfrage müssen Sie die Funktion „rows.Close“ aufrufen, um den Iterator der Ergebnismenge zu schließen
  1. Führen Sie INSERT aus, UPDATE-, DELETE-Operationen

In Golang ist das Ausführen von Operationen wie INSERT, UPDATE und DELETE im Grunde dasselbe wie das Ausführen von SELECT-Operationen. Das Folgende ist der Beispielcode:

result, err := db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "John", 25)
if err != nil {
    panic(err.Error())
}
lastInsertId, _ := result.LastInsertId()
rowsAffected, _ := result.RowsAffected()
fmt.Printf("LastInsertId: %d, RowsAffected: %d
", lastInsertId, rowsAffected)
  • Die Funktion „db.Exec“ übergibt die SQL-Operationsanweisung und ihre Parameter an die MySQL-Datenbank
  • Die Funktion „result.LastInsertId()“ gibt die Primärschlüssel-ID der eingefügten Daten zurück
  • "result.RowsAffected() "Funktion gibt die Anzahl der betroffenen Zeilen zurück
  1. Verwendung vorbereiteter Anweisungen

In Golang können Sie vorbereitete Anweisungen verwenden, um MySQL-Abfragen auszuführen. Vorbereitete Anweisungen können die Abfrageleistung verbessern, da der MySQL-Server dieselben Abfrageanweisungen zwischenspeichern kann, wenn mehrere identische Abfrageanweisungen ausgeführt werden, wodurch der Aufwand für das Kompilieren von SQL-Anweisungen verringert wird. Das Folgende ist ein Beispiel für die Verwendung vorbereiteter Anweisungen:

stmt, err := db.Prepare("SELECT name, age FROM users WHERE age > ?")
if err != nil {
    panic(err.Error())
}
defer stmt.Close()

rows, err := stmt.Query(20)
if err != nil {
    panic(err.Error())
}
defer rows.Close()

for rows.Next() {
    var name string
    var age int
    err = rows.Scan(&name, &age)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(name, age)
}
  • Die Funktion „db.Prepare“ kompiliert die Abfrageanweisung in ein vorbereitetes Anweisungsobjekt
  • Im vorbereiteten Objekt wird „?“ zur Darstellung von Parameterplatzhaltern verwendet
  • Ähnlich wie „db.Query“, die Funktion „stmt.Query“, kann zum Ausführen vorverarbeiteter Abfragen verwendet werden.
  1. Sicherheitsüberlegungen

Sicherheit ist bei MySQL-Abfragen sehr wichtig. Golang bietet einige Best Practices für die Verwendung von MySQL-Abfragen, darunter:

  • Verwenden Sie keine Zeichenfolgenverkettung zum Erstellen von SQL-Anweisungen. Sie sollten vorbereitete Anweisungen und Parameterplatzhalter verwenden.
  • Erstellen Sie Abfrageanweisungen nicht dynamisch aus Benutzereingaben, da dies möglicherweise offengelegt wird Datenbank
  • Eingabedaten müssen maskiert oder parametrisiert werden, um SQL-Injection-Angriffe zu verhindern

Die oben genannten Best Practices können das Risiko von Angriffen wie SQL-Injection verringern.

Fazit

In diesem Artikel haben wir untersucht, wie man MySQL-Abfragen in Golang ausführt. Nachdem Sie die grundlegenden Verbindungsmethoden und die Syntax verstanden haben, können Sie Golang zum Abfragen der MySQL-Datenbank verwenden und Best Practices verwenden, um die Sicherheit der Abfrage sicherzustellen. Berücksichtigen Sie bei der Verwendung von Golang für MySQL-Abfragen stets Sicherheitsbedenken.

Das obige ist der detaillierte Inhalt vongolang MySQL-Abfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:grpc golang-BereitstellungNächster Artikel:grpc golang-Bereitstellung