Heim  >  Artikel  >  Datenbank  >  Wie Golang MySQL-Daten verwaltet

Wie Golang MySQL-Daten verwaltet

王林
王林nach vorne
2023-05-27 15:47:131774Durchsuche

Was ist MySQL?

MySQL wurde unter der Schirmherrschaft der Oracle Corporation entwickelt und ist ein relationales Datenbankverwaltungssystem, das in der Internetinfrastruktur weit verbreitet ist. 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 verwendet eine tabellenbasierte Datenstruktur, bei der jede Zeile einen Datensatz und jede Spalte ein Feld darstellt. 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 Standardbibliothek der GO-Sprache 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()

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. 🎜

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

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen