Rychlý start: Připojení a dotazování dat ve službě Azure Database for MySQL pomocí jazyka Go
Tento rychlý start ukazuje, jak se připojit ke službě Azure Database for MySQL z platforem Windows, Ubuntu Linux a Apple macOS pomocí kódu napsaného v jazyce Go. Ukazuje, jak pomocí příkazů jazyka SQL dotazovat, vkládat, aktualizovat a odstraňovat data v databázi. Toto téma předpokládá, že máte zkušenosti s vývojem pomocí jazyka Go a teprve začínáte pracovat se službou Azure Database for MySQL.
Požadavky
Tento rychlý start jako výchozí bod využívá prostředky vytvořené v některém z těchto průvodců:
- Rychlý start: Vytvoření instance Azure Database for MySQL pomocí webu Azure Portal
- Rychlý start: Vytvoření instance flexibilního serveru Azure Database for MySQL pomocí Azure CLI
Důležité
Pro účely tohoto rychlého startu doporučujeme použít server s povoleným veřejným přístupem (povolené IP adresy ). K dokončení tohoto rychlého startu může být potřeba použít server s povoleným privátním přístupem (integrace virtuální sítě).
Ujistěte se, že ip adresa, ze které se připojujete, byla přidána pravidla brány firewall serveru pomocí pravidel brány firewall pro flexibilní server Azure Database for MySQL pomocí webu Azure Portal nebo správy pravidel brány firewall pro flexibilní server Azure Database for MySQL pomocí Azure CLI.
Instalace jazyka Go a konektoru MySQL
Nainstalujte na svém počítači jazyk Go a ovladač go-sql-driver for MySQL. V závislosti na vaší platformě postupujte podle kroků v příslušné části:
Stáhněte a nainstalujte jazyk Go pro Microsoft Windows podle pokynů k instalaci.
Z nabídky Start spusťte příkazový řádek.
Vytvořte složku pro váš projekt, například
mkdir %USERPROFILE%\go\src\mysqlgo
.Změňte adresář na složku projektu, například
cd %USERPROFILE%\go\src\mysqlgo
.Nastavte proměnnou prostředí pro GOPATH tak, aby odkazovat na adresář zdrojového kódu:
set GOPATH=%USERPROFILE%\go
.Spuštěním příkazu go mod init vytvořte modul v aktuálním adresáři. Například:
go mod init mysqlgo
.- Parametr
<module_path>
je obecně umístění v úložišti GitHubu , napříkladgithub.com/<your_github_account_name>/<directory>
. - Když vytváříte aplikaci příkazového řádku jako test a aplikaci nepublikujete,
<module_path>
nemusí odkazovat na skutečné umístění. Napříkladmysqlgo
.
- Parametr
Nainstalujte ovladač go-sql-driver for mysql spuštěním příkazu
go get github.com/go-sql-driver/mysql
.Stručně řečeno, nainstalujte jazyk Go a potom na příkazovém řádku spusťte následující příkazy:
mkdir %USERPROFILE%\go\src\mysqlgo cd %USERPROFILE%\go\src\mysqlgo set GOPATH=%USERPROFILE%\go go mod init mysqlgo go get github.com/go-sql-driver/mysql
Získání informací o připojení
Získejte informace o připojení potřebné pro připojení ke službě Azure Database for MySQL. Potřebujete plně kvalifikovaný název serveru a přihlašovací údaje.
- Přihlaste se k webu Azure Portal.
- V nabídce vlevo na webu Azure Portal vyberte Všechny prostředky a vyhledejte server, který jste vytvořili (například mydemoserver).
- Vyberte název serveru.
- Na panelu Přehled serveru si poznamenejte Název serveru a Přihlašovací jméno správce serveru. Pokud zapomenete své heslo, můžete ho na tomto panelu také resetovat.
Sestavení a spuštění kódu jazyka Go
- K psaní kódu jazyka Go můžete použít jednoduchý textový editor, jako je Poznámkový blok v systému Microsoft Windows, vi nebo Nano v systému Ubuntu nebo TextEdit v systému macOS. Pokud dáváte přednost bohatšímu integrovanému vývojovému prostředí (IDE), vyzkoušejte Gogland od JetBrains, Visual Studio Code od Microsoftu nebo Atom.
- Vložte kód Go z níže uvedených částí do textových souborů a uložte je do složky projektu s příponou *.go (například cesta k
%USERPROFILE%\go\src\mysqlgo\createtable.go
Windows nebo cesta~/go/src/mysqlgo/createtable.go
k Linuxu). - Vyhledejte v kódu konstanty
host
,database
,user
apassword
a příklady hodnot nahraďte vlastními hodnotami. Databáze s názvem flexibleserverdb se vytvoří při vytváření instance serveru Azure Database for MySQL. Tuto databázi nebo jinou databázi, kterou jste vytvořili, můžete použít. - Spusťte příkazový řádek nebo prostředí Bash. Změňte adresář na složku vašeho projektu. Například ve Windows pomocí příkazu
cd %USERPROFILE%\go\src\mysqlgo\
. V Linuxu pomocí příkazucd ~/go/src/mysqlgo/
. Některá ze zmíněných integrovaných vývojových prostředí (IDE) nabízejí možnosti ladění a modulu runtime, které nevyžadují příkazy prostředí. - Spusťte kód zadáním příkazu
go run createtable.go
, který aplikaci zkompiluje a spustí. - Alternativně, pokud z kódu chcete sestavit nativní aplikaci, spusťte příkaz
go build createtable.go
a pak aplikaci spusťte pomocí souborucreatetable.exe
.
Připojení, vytvoření tabulky a vložení dat
Pomocí následujícího kódu se připojte k serveru, vytvořte tabulku a nahrajte data s využitím příkazu INSERT jazyka SQL.
Kód importuje tři balíčky: balíček sql, balíček go sql driver for mysql jako ovladač pro komunikaci se službou Azure Database for MySQL a balíček fmt pro tisk vstupů a výstupů na příkazovém řádku.
Kód volá metodu sql.Open() pro připojení ke službě Azure Database for MySQL a pomocí metody db.Ping() zkontroluje stav připojení. Po celou dobu se používá popisovač databáze, který uchovává fond připojení pro databázový server. Kód několikrát volá metodu Exec() pro spuštění několika příkazů jazyka DDL. Kód také pomocí metod Prepare() a Exec() spouští připravené příkazy s různými parametry pro vložení tří řádků. Pokaždé se pomocí vlastní metody checkError() zkontroluje, jestli nedošlo k chybě, a pokud k nějaké dojde, kód se nouzově ukončí.
Nahraďte konstanty host
, database
, user
a password
vlastními hodnotami.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Drop previous table of same name if one exists.
_, err = db.Exec("DROP TABLE IF EXISTS inventory;")
checkError(err)
fmt.Println("Finished dropping table (if existed).")
// Create table.
_, err = db.Exec("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
checkError(err)
fmt.Println("Finished creating table.")
// Insert some data into table.
sqlStatement, err := db.Prepare("INSERT INTO inventory (name, quantity) VALUES (?, ?);")
res, err := sqlStatement.Exec("banana", 150)
checkError(err)
rowCount, err := res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("orange", 154)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("apple", 100)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Čtení dat
Pomocí následujícího kódu se připojte a načtěte data s využitím příkazu SELECT jazyka SQL.
Kód importuje tři balíčky: balíček sql, balíček go sql driver for mysql jako ovladač pro komunikaci se službou Azure Database for MySQL a balíček fmt pro tisk vstupů a výstupů na příkazovém řádku.
Kód volá metodu sql.Open() pro připojení ke službě Azure Database for MySQL a pomocí metody db.Ping() zkontroluje stav připojení. Po celou dobu se používá popisovač databáze, který uchovává fond připojení pro databázový server. Kód volá metodu Query() pro spuštění příkazu select. Potom spustí metodu Next() pro iteraci sadou výsledků dotazu a metodu Scan() pro parsování hodnot sloupců a uložení těchto hodnot do proměnných. Pokaždé se pomocí vlastní metody checkError() zkontroluje, jestli nedošlo k chybě, a pokud k nějaké dojde, kód se nouzově ukončí.
Nahraďte konstanty host
, database
, user
a password
vlastními hodnotami.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Variables for printing column data when scanned.
var (
id int
name string
quantity int
)
// Read some data from the table.
rows, err := db.Query("SELECT id, name, quantity from inventory;")
checkError(err)
defer rows.Close()
fmt.Println("Reading data:")
for rows.Next() {
err := rows.Scan(&id, &name, &quantity)
checkError(err)
fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
}
err = rows.Err()
checkError(err)
fmt.Println("Done.")
}
Aktualizace dat
Pomocí následujícího kódu se připojte a aktualizujte data s využitím příkazu UPDATE jazyka SQL.
Kód importuje tři balíčky: balíček sql, balíček go sql driver for mysql jako ovladač pro komunikaci se službou Azure Database for MySQL a balíček fmt pro tisk vstupů a výstupů na příkazovém řádku.
Kód volá metodu sql.Open() pro připojení ke službě Azure Database for MySQL a pomocí metody db.Ping() zkontroluje stav připojení. Po celou dobu se používá popisovač databáze, který uchovává fond připojení pro databázový server. Kód volá metodu Exec() pro spuštění příkazu update. Pokaždé se pomocí vlastní metody checkError() zkontroluje, jestli nedošlo k chybě, a pokud k nějaké dojde, kód se nouzově ukončí.
Nahraďte konstanty host
, database
, user
a password
vlastními hodnotami.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("UPDATE inventory SET quantity = ? WHERE name = ?", 200, "banana")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Updated %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Odstranění dat
Pomocí následujícího kódu se připojte a odeberte data s využitím příkazu DELETE jazyka SQL.
Kód importuje tři balíčky: balíček sql, balíček go sql driver for mysql jako ovladač pro komunikaci se službou Azure Database for MySQL a balíček fmt pro tisk vstupů a výstupů na příkazovém řádku.
Kód volá metodu sql.Open() pro připojení ke službě Azure Database for MySQL a pomocí metody db.Ping() zkontroluje stav připojení. Po celou dobu se používá popisovač databáze, který uchovává fond připojení pro databázový server. Kód volá metodu Exec() pro spuštění příkazu delete. Pokaždé se pomocí vlastní metody checkError() zkontroluje, jestli nedošlo k chybě, a pokud k nějaké dojde, kód se nouzově ukončí.
Nahraďte konstanty host
, database
, user
a password
vlastními hodnotami.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("DELETE FROM inventory WHERE name = ?", "orange")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Deleted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Vyčištění prostředků
Pokud chcete vyčistit všechny prostředky použité během tohoto rychlého startu, odstraňte skupinu prostředků pomocí následujícího příkazu:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes