Heim  >  Artikel  >  Backend-Entwicklung  >  So bedienen Sie MySQL-Daten in Golang

So bedienen Sie MySQL-Daten in Golang

PHPz
PHPzOriginal
2023-03-22 14:23:561588Durchsuche

Im modernen Software-Engineering sind die Fähigkeiten zum Erstellen effizienter und zuverlässiger Serveranwendungen sehr gefragt. Unter diesen ist die Verwendung der Go-Sprache zum Aufrufen relationaler Datenbanken eine unverzichtbare Grundlage. In diesem Artikel verwenden wir die Standardpakete in der Go-Sprache, um MySQL-Daten abzufragen und einzufügen.

Was ist MySQL?

MySQL ist ein relationales Datenbankverwaltungssystem, das in der Internet-Infrastruktur weit verbreitet ist und unter der Schirmherrschaft der Oracle Corporation entwickelt wurde. Es unterstützt mehrere Betriebssysteme und Programmiersprachen, einschließlich der Go-Sprache, und verfügt über eine Reihe von Funktionen, die die Integration großer Datenmengen und leistungsstarke Abfragen unterstützen.

MySQL-Daten basieren auf Tabellen. Eine Datenzeile entspricht einem Datensatz und eine Datenspalte entspricht einem Feld. Es verwendet die SQL-Sprache, um Daten zu bearbeiten. Zu den häufigsten SQL-Operationen gehören SELECT, INSERT, UPDATE, DELETE und CREATE TABLE.

MySQL-Treiber in der Go-Sprache

In der Go-Sprache können wir MySQL-Treiber von Drittanbietern verwenden, um eine Verbindung zur MySQL-Datenbank herzustellen und diese abzufragen. Die GO-Sprachstandardbibliothek enthält jedoch bereits das Paket database/sql, das die Standard-SQL-Datenbankschnittstelle implementiert hat und mit anderen praktischen und beliebten SQL-Datenbanken interagieren kann, einschließlich MySQL, PostgreSQL und SQLite usw. database/sql 包,这个包已经实现了标准的 SQL 数据库接口,可以和其他方便的流行的 SQL 数据库交互操作,包括 MySQL、PostgreSQL 和 SQLite 等。

因此,在我们开始构建查询 MySQL 的 Go 应用程序之前,我们需要安装 MySql 驱动程序。可以使用命令行命令 go get -u github.com/go-sql-driver/mysql 快捷安装。

这是因为在 Go 语言中,所有的数据访问都需通过 SQL.DB 连接进行。并且驱动程序的目的是用来实现 database/sql 的功能中那样的的接口约定。

建立连接

在 Go 语言中,建立到 MySQL 数据库的连接是基于连接字符串的,连接字符串包含连接 MySQL 所需的所有参数,如用户名、密码、主机名或 IP 地址、端口号和数据库名称等。

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    log.Fatal(err)
}

查询数据

在 Go 语言中,可以使用 db.Query()db.QueryRow()db.Exec() 函数查询和操作 MySQL 数据库中的数据。

db.Query() 函数用于查询多条记录,返回一个 *sql.Rows 对象。db.QueryRow() 函数用于查询单条记录,返回一个 *sql.Row 对象,类似于 resultset,但是它只返回第一行记录,通常用于查询单个唯一记录。db.Exec() 函数用于执行非查询 SQL 语句,例如 INSERT、UPDATE 和 DELETE,返回一个 sql.Result 对象。

在本例中,我们使用 db.Query() 函数来查询所有记录。我们将使用一个简单的计数器来统计记录的数量,并将每行数据打印到控制台。

rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

count := 0
for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("id=%d, name=%s\n", id, name)
    count++
}
if err := rows.Err(); err != nil {
    log.Fatal(err)
}

fmt.Printf("Found %d users\n", count)

必须在检索数据后调用 rows.Close() 函数以释放与 *sql.Rows 关联的数据库资源。同时,代码中使用了 rows.Next() 函数,它返回一个布尔值,指示是否还有更多的行可以进行处理。另外,在这个例子中使用了 rows.Scan() 函数将每行记录的值复制到这个例子中定义的 idname 变量中,然后在控制台中打印每个值。

插入数据

我们也可以使用 Go 语言插入数据到 MySQL 数据库中,最简单的方法使用 db.Exec() 函数。我们可以将插入语句传递到 db.Exec() 函数中,它将以 SQL 语句的形式在 MySQL 中执行。

result, err := db.Exec("INSERT INTO users(name, email) VALUES('John Doe', 'johndoe@gmail.com')")
if err != nil {
    log.Fatal(err)
}

rowsAffected, err := result.RowsAffected()
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Inserted %d rows into users table\n", rowsAffected)

我们可以使用 result.RowsAffected() 获取结果集中受影响的行数,并使用该数值在控制台中打印更新数据的数量。

总结

在本文中,我们介绍了使用 Go 语言进行 MySQL 数据库的基础查询操作。我们了解了如何使用标准库 database/sql 和第三方 MySQL 驱动程序,建立连接并查询数据。我们还了解了如何插入数据,使用 db.Exec()

Bevor wir also mit der Erstellung einer Go-Anwendung beginnen, die MySQL abfragt, müssen wir den MySql-Treiber installieren. Für eine schnelle Installation können Sie den Befehlszeilenbefehl go get -u github.com/go-sql-driver/mysql verwenden. 🎜🎜Das liegt daran, dass in der Go-Sprache der gesamte Datenzugriff über eine SQL.DB-Verbindung erfolgen muss. Und der Zweck des Treibers besteht darin, die Schnittstellenkonventionen in den Funktionen von database/sql zu implementieren. 🎜🎜🎜Herstellen einer Verbindung🎜🎜🎜In der Go-Sprache basiert der Verbindungsaufbau auf der Verbindungszeichenfolge. Die Verbindungszeichenfolge enthält alle für die Verbindung mit MySQL erforderlichen Parameter, wie Benutzername, Passwort, Hostname oder IP-Adresse, Portnummer und Datenbankname usw. 🎜rrreee🎜🎜Daten abfragen🎜🎜🎜In der Go-Sprache können Sie db.Query(), db.QueryRow() und db.Exec() verwenden Funktionen zum Abfragen und Bearbeiten von Daten in der MySQL-Datenbank. 🎜🎜db.Query()-Funktion wird zum Abfragen mehrerer Datensätze verwendet und gibt ein *sql.Rows-Objekt zurück. Die Funktion db.QueryRow() wird zum Abfragen eines einzelnen Datensatzes verwendet und gibt ein *sql.Row-Objekt zurück, ähnlich wie resultset, jedoch nicht Gibt nur die erste A-Zeile von Datensätzen zurück, die normalerweise zum Abfragen eines einzelnen eindeutigen Datensatzes verwendet wird. Die Funktion db.Exec() führt Nicht-Abfrage-SQL-Anweisungen wie INSERT, UPDATE und DELETE aus und gibt ein sql.Result-Objekt zurück. 🎜🎜In diesem Beispiel verwenden wir die Funktion db.Query(), um alle Datensätze abzufragen. Wir werden einen einfachen Zähler verwenden, um die Anzahl der Datensätze zu zählen und jede Datenzeile auf der Konsole auszugeben. 🎜rrreee🎜Die Funktion rows.Close() muss nach dem Abrufen von Daten aufgerufen werden, um die mit *sql.Rows verknüpften Datenbankressourcen freizugeben. Außerdem verwendet der Code die Funktion rows.Next(), die einen booleschen Wert zurückgibt, der angibt, ob weitere Zeilen verarbeitet werden können. Darüber hinaus wird in diesem Beispiel die Funktion rows.Scan() verwendet, um den Wert jedes Zeilendatensatzes in die definierte id und name zu kopieren in diesem Beispiel > Variable und geben Sie jeden Wert in der Konsole aus. 🎜🎜🎜Daten einfügen🎜🎜🎜Wir können auch die Go-Sprache verwenden, um Daten in die MySQL-Datenbank einzufügen. Der einfachste Weg ist die Verwendung der Funktion db.Exec(). Wir können die Einfügeanweisung an die Funktion db.Exec() übergeben und sie wird in MySQL als SQL-Anweisung ausgeführt. 🎜rrreee🎜Wir können result.RowsAffected() verwenden, um die Anzahl der betroffenen Zeilen im Ergebnissatz abzurufen und diesen Wert verwenden, um die Anzahl der aktualisierten Daten in der Konsole auszugeben. 🎜🎜🎜Zusammenfassung🎜🎜🎜In diesem Artikel haben wir die grundlegenden Abfragevorgänge der MySQL-Datenbank mithilfe der Go-Sprache vorgestellt. Wir haben gelernt, wie man die Standardbibliothek database/sql und MySQL-Treiber von Drittanbietern verwendet, um Verbindungen herzustellen und Daten abzufragen. Wir haben auch gelernt, wie man mit der Funktion db.Exec() Daten in eine MySQL-Datenbank einfügt. Diese Konzepte sind ein wichtiger Bestandteil beim Aufbau effizienter und zuverlässiger Serveranwendungen in Go und eine wesentliche Fähigkeit im modernen Software-Engineering. 🎜

Das obige ist der detaillierte Inhalt vonSo bedienen Sie MySQL-Daten in Golang. 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