Heim Datenbank MySQL-Tutorial So extrahieren Sie Daten aus einer MySQL-Datenbank mithilfe der Go-Sprache

So extrahieren Sie Daten aus einer MySQL-Datenbank mithilfe der Go-Sprache

Jun 17, 2023 pm 10:21 PM
go语言 mysql数据库 数据抽取

MySQL ist eine sehr beliebte relationale Datenbank und die Go-Sprache ist eine sich schnell entwickelnde Programmiersprache. Wenn Sie beide kombinieren, können Sie eine bequeme und effiziente Datenextraktion erreichen. In diesem Artikel wird die Methode zur Verwendung der Go-Sprache zum Extrahieren von MySQL-Daten vorgestellt. Ich hoffe, dass sie alle inspirieren und helfen kann.

1. Installieren und konfigurieren Sie den MySQL-Treiber

Bevor wir die Go-Sprache zum Extrahieren von MySQL-Daten verwenden, müssen wir zuerst den MySQL-Treiber installieren. Es gibt viele Möglichkeiten für MySQL-Treiber. Hier stellen wir die beiden am häufigsten verwendeten vor: go-sql-driver und mysql-Treiber.

Zur Installation mit go-sql-driver können Sie den folgenden Befehl verwenden:

go get -u github.com/go-sql-driver/mysql
Nach dem Login kopieren

Zur Installation mit mysql-Treiber können Sie den folgenden Befehl verwenden:

go get -u github.com/mysql/mysql-go
Nach dem Login kopieren

Nach Abschluss der Installation importieren Sie das entsprechende Treiberpaket in Code, zum Beispiel:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)
Nach dem Login kopieren

Aber es ist zu beachten, dass Sie bei Verwendung des MySQL-Treibers auch MySQL konfigurieren müssen. Die spezifische Methode lautet wie folgt:

  1. Stellen Sie den Zeichensatz von MySQL auf utf8mb4 ein

In Versionen Vor MySQL 5.7.7 ist der Standardzeichensatz utf8, der nur 3-Byte-Unicode-Zeichen unterstützt. In den Versionen 5.7.7 und höher wird standardmäßig der utf8mb4-Zeichensatz verwendet, der 4-Byte-Unicode-Zeichen unterstützt Konfigurationsdatei Der Zeichensatzserver in my.cnf oder my.ini ist auf utf8mb4 eingestellt, um den Effekt zu erzielen, dass Sonderzeichen wie Chinesisch unterstützt werden.

  1. Binlog-Protokoll aktivieren

In MySQL zeichnet das Binlog-Protokoll alle SQL-Anweisungen auf, die auf MySQL ausgeführt werden. Daher müssen Sie beim Extrahieren von Daten das Binlog-Protokoll für die Echtzeit-Datensynchronisierung aktivieren. Es kann in my.cnf oder my.ini konfiguriert und aktiviert werden.

2. Stellen Sie eine Verbindung zur MySQL-Datenbank her.

Nachdem wir den MySQL-Treiber installiert und entsprechend konfiguriert haben, müssen wir als Nächstes eine Verbindung zur MySQL-Datenbank herstellen. Die Methode zum Herstellen einer Verbindung zur MySQL-Datenbank lautet wie folgt:

db, err := sql.Open("mysql", "user:password@tcp(ip:port)/database")
Nach dem Login kopieren

Dabei sind Benutzer und Passwort der MySQL-Benutzername und das MySQL-Passwort, IP und Port sind die MySQL-Verbindungsadresse und Portnummer und Datenbank ist die Datenbank, auf die zugegriffen werden soll.

Nach erfolgreicher Verbindung mit der MySQL-Datenbank können wir entsprechende Datenvorgänge ausführen, z. B. das Lesen von Daten in MySQL in die Go-Sprache oder das Speichern von Daten in der Go-Sprache in MySQL.

3. SQL-Anweisungsabfrage

Es ist sehr einfach, SQL-Anweisungen zum Abfragen von Daten in MySQL in der Go-Sprache zu verwenden. Wir können die Funktion sql.Query verwenden, um die Abfrageanweisung auszuführen und die Ergebnisse im Zeilenobjekt zu speichern, z. B.:

rows, err := db.Query("SELECT * FROM table1")
Nach dem Login kopieren

Nach erfolgreicher Ausführung können Sie die Funktion Next des Zeilenobjekts verwenden, um die Ergebnisse jedes Mal zu durchlaufen Sie können einen Datensatz herausnehmen und ihn in das entsprechende Strukturobjekt kapseln:

type Product struct {
    ID         int64  `db:"id"`
    Name       string `db:"name"`
    Price      int64  `db:"price"`
    CreateTime int64  `db:"create_time"`
}

func main() {
    rows, err := db.Query("SELECT * FROM product")  // 查询product表
    if err != nil {
        panic(err)
    }

    defer rows.Close()

    products := make([]Product, 0)

    for rows.Next() {  // 遍历结果集
        var p Product
        err = rows.Scan(&p.ID, &p.Name, &p.Price, &p.CreateTime)  // 将一条记录封装到Product对象中
        if err != nil {
            panic(err)
        }
        products = append(products, p)
    }
}
Nach dem Login kopieren

Die Methode zum Abfragen eines einzelnen Datensatzes mit der Funktion sql.QueryRow ist ebenfalls sehr einfach:

var p Product
err := db.QueryRow("SELECT * FROM product WHERE id=?", 1).Scan(&p.ID, &p.Name, &p.Price, &p.CreateTime)
if err != nil {
    panic(err)
}
Nach dem Login kopieren

4. Daten einfügen

Es ist auch sehr einfach um die Go-Sprache zum Einfügen von Daten in MySQL zu verwenden. Um dies zu erreichen, können wir die Funktion sql.Exec verwenden, um die SQL-Anweisung auszuführen:

stmt, err := db.Prepare("INSERT INTO product(name, price) VALUES(?,?)")
if err != nil {
    panic(err)
}

res, err := stmt.Exec("Product1", 100)
if err != nil {
    panic(err)
}
Nach dem Login kopieren

Die Prepare-Funktion im obigen Code wird verwendet, um die SQL-Anweisung vorzubereiten, und dann die Exec-Funktion verwenden, um die SQL-Anweisung auszuführen und das Ergebnis zurückzugeben . Bei erfolgreicher Ausführung enthält das zurückgegebene Ergebnis die ID der eingefügten Daten (falls vorhanden), die mit der Funktion LastInsertId abgerufen werden kann. Wenn Sie die Anzahl der betroffenen Zeilen ermitteln müssen, können Sie die Funktion „RowsAffected“ verwenden. 5. Daten aktualisieren und löschen Manchmal ist es notwendig, die Atomizität der Daten sicherzustellen, dh alle Datenbankvorgänge sind entweder erfolgreich oder fehlschlagen. An diesem Punkt können wir den Transaktionsverwaltungsmechanismus verwenden, um dies zu erreichen.

In der Go-Sprache können Sie db.Begin und tx.Commit verwenden, um Transaktionen zu öffnen und zu übermitteln, wie zum Beispiel:

// 执行更新操作
stmt, err := db.Prepare("UPDATE product SET price=? WHERE id=?")
if err != nil {
    panic(err)
}

res, err := stmt.Exec(200, 1)
if err != nil {
    panic(err)
}

// 执行删除操作
stmt, err = db.Prepare("DELETE FROM product WHERE id=?")
if err != nil {
    panic(err)
}

res, err = stmt.Exec(1)
if err != nil {
    panic(err)
}
Nach dem Login kopieren

Im obigen Code können wir nach dem Öffnen der Transaktion mehrere SQL-Operationen in der Transaktion ausführen. Nachdem Sie alle SQL-Operationen ausgeführt und die Atomizität aller SQL-Operationen sichergestellt haben, müssen Sie die Funktion Commit() verwenden, um die Transaktion festzuschreiben. Wenn bei einer SQL-Operation ein Fehler auftritt, können Sie die Funktion Rollback() verwenden, um die Transaktion rückgängig zu machen.

7. Fazit

In diesem Artikel wird die Methode zur Verwendung der Go-Sprache zum Extrahieren von Daten aus der MySQL-Datenbank vorgestellt. Durch die obige Einführung können wir feststellen, dass die Verwendung der Go-Sprache zum Durchführen von Datenoperationen in der MySQL-Datenbank sehr praktisch und effizient ist. Wenn Sie noch nicht versucht haben, die Go-Sprache für Datenbankoperationen zu verwenden, können Sie es genauso gut versuchen. Ich glaube, Sie werden sich in sie verlieben.

Das obige ist der detaillierte Inhalt vonSo extrahieren Sie Daten aus einer MySQL-Datenbank mithilfe der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1662
14
PHP-Tutorial
1262
29
C#-Tutorial
1235
24
Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Apr 02, 2025 pm 05:09 PM

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Apr 02, 2025 pm 12:54 PM

Warum meldet der DSN bei Verwendung von SQL.Open keinen Fehler? In Go Language, Sql.open ...

See all articles