Rychlý start: Připojení a dotazování dat ve službě Azure Database for MySQL pomocí jazyka Go
PLATÍ PRO: Jednoúčelový server Azure Database for MySQL
Důležité
Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?
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ů:
- Vytvoření serveru Azure Database for MySQL pomocí webu Azure Portal
- Vytvoření serveru Azure Database for MySQL pomocí Azure CLI
Důležité
Ujistěte se, že ip adresa, ze které se připojujete, byla přidána pravidla brány firewall serveru pomocí webu Azure Portal nebo 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í GOPATH tak, aby odkazovala na adresář se zdrojovým kódem.
set GOPATH=%USERPROFILE%\go
.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 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 klikněte na Všechny prostředky a vyhledejte vytvořený server (například mydemoserver).
- Klikněte na 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. - 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 = "quickstartdb"
user = "myadmin@mydemoserver"
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", 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 = "quickstartdb"
user = "myadmin@mydemoserver"
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", 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 = "quickstartdb"
user = "myadmin@mydemoserver"
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", 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 = "quickstartdb"
user = "myadmin@mydemoserver"
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", 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