Rövid útmutató: Adatok csatlakoztatása és lekérdezése a Go nyelv használatával az Azure Database for MySQL-ben
A következőkre vonatkozik: Azure Database for MySQL – Önálló kiszolgáló
Fontos
Az önálló Azure Database for MySQL-kiszolgáló a kivonási útvonalon van. Határozottan javasoljuk, hogy frissítsen rugalmas Azure Database for MySQL-kiszolgálóra. További információ a rugalmas Azure Database for MySQL-kiszolgálóra való migrálásról: Mi történik az önálló Azure Database for MySQL-kiszolgálóval?
Ez a rövid útmutató azt ismerteti, hogyan lehet csatlakozni az Azure Database for MySQL-hez Windows, Ubuntu Linux és Apple macOS platformról Go nyelven írt kóddal. Bemutatjuk, hogy az SQL-utasítások használatával hogyan kérdezhetők le, illeszthetők be, frissíthetők és törölhetők az adatok az adatbázisban. Ez a témakör azt feltételezi, hogy Ön a Go használata terén rendelkezik fejlesztési tapasztalatokkal, de az Azure Database for MySQL használatában még járatlan.
Előfeltételek
Ebben a rövid útmutatóban a következő útmutatók valamelyikében létrehozott erőforrásokat használunk kiindulási pontként:
- Azure-adatbázis létrehozása MySQL-kiszolgálóhoz az Azure Portal használatával
- Azure-adatbázis létrehozása MySQL-kiszolgálóhoz az Azure CLI használatával
Fontos
Győződjön meg arról, hogy a kiszolgáló tűzfalszabályai az Azure Portal vagy az Azure CLI használatával lettek hozzáadva a csatlakozó IP-címhez
A Go és a MySQL-összekötő telepítése
Telepítse a Gót és a go-sql-driver for MySQL illesztőt a saját számítógépére. Kövesse a platformjának megfelelő lépéseket:
Töltse le és telepítse a Microsoft Windowshoz készült Go-t a telepítési utasítások szerint.
Nyissa meg a parancssort a Start menüből.
Hozzon létre egy mappát a projekt számára, például
mkdir %USERPROFILE%\go\src\mysqlgo
.Nyissa meg a projektmappát (például
cd %USERPROFILE%\go\src\mysqlgo
).Úgy állítsa be a GOPATH környezeti változóját, hogy a forráskód könyvtárára mutasson.
set GOPATH=%USERPROFILE%\go
.Telepítse a go-sql-driver for mysql illesztőt a
go get github.com/go-sql-driver/mysql
parancs futtatásával.Összefoglalva, telepítse a Go-t, majd futtassa ezeket a parancsokat a parancssorban:
mkdir %USERPROFILE%\go\src\mysqlgo cd %USERPROFILE%\go\src\mysqlgo set GOPATH=%USERPROFILE%\go go get github.com/go-sql-driver/mysql
Kapcsolatadatok lekérése
Kérje le a MySQL-hez készült Azure Database-hez való csatlakozáshoz szükséges kapcsolatadatokat. Szüksége lesz a teljes kiszolgálónévre és a bejelentkezési hitelesítő adatokra.
- Jelentkezzen be az Azure Portalra.
- Az Azure Portal bal oldali menüjében kattintson a Minden erőforrás lehetőségre, és keressen rá a létrehozott kiszolgálóra (például mydemoserver).
- Kattintson a kiszolgálónévre.
- A kiszolgáló Áttekintés paneléről jegyezze fel a Kiszolgálónevet és a Kiszolgáló-rendszergazdai bejelentkezési nevet. Ha elfelejti a jelszavát, ezen a panelen új jelszót is tud kérni.
Go kód felépítése és futtatása
- Golang-kód írásához használhat egy egyszerű szövegszerkesztőt, ilyen például Microsoft Windows rendszeren a Jegyzettömb, Ubuntu rendszeren a vi vagy a Nano, macOS rendszeren pedig a TextEdit. Ha a funkciógazdagabb interaktív fejlesztési környezeteket (IDE-ket) részesít előnyben, próbálja ki a Jetbrains Gogland a Microsoft Visual Studio Code vagy az Atom eszközt.
- Illessze be a Go kódot az alábbi szakaszokból szövegfájlokba, majd mentse őket a projektmappába a *.go fájlkiterjesztéssel (például Windows-elérési út
%USERPROFILE%\go\src\mysqlgo\createtable.go
vagy Linux elérési út~/go/src/mysqlgo/createtable.go
). - Keresse meg a
HOST
, aDATABASE
, aUSER
és aPASSWORD
állandót a kódban, és a példaértékeket cserélje le a saját értékeire. - Nyissa meg a parancssort vagy a Bash felületet. Lépjen a projektmappára. Windows rendszer például a következővel:
cd %USERPROFILE%\go\src\mysqlgo\
. Linuxon:cd ~/go/src/mysqlgo/
. A fentiekben említettek közül egyes IDE-szerkesztők hibakeresési és futásidejű képességeket biztosítanak anélkül, hogy rendszerhéjparancsokra lenne szükség. - Futtassa a kódot a
go run createtable.go
parancs beírásával az alkalmazás fordításához és futtatásához. - Vagy a kód natív alkalmazásba való beépítéséhez írja be a
go build createtable.go
parancsot, majd indítsa el acreatetable.exe
fájlt az alkalmazás futtatásához.
Csatlakozás, táblák létrehozása és adatok beszúrása
Az alábbi kód használatával csatlakozhat a kiszolgálóhoz, létrehozhat egy táblát és betöltheti az adatokat egy INSERT SQL-utasítással.
A kód három csomagot importál: az sql package és a go sql driver for mysql csomagot illesztőként a MySQL-hez készült Azure adatbázissal való kommunikációhoz, illetve az fmt package csomagot a nyomtatott bemenetekhez és kimenetekhez a parancssoron.
A kód meghívja az sql.Open() metódust az Azure Database for MySQL-hez való csatlakozáshoz, majd a db.Ping() metódussal ellenőrzi a kapcsolatot. A rendszer a folyamat során adatbázis-leírót használ, amely az adatbázis-kiszolgáló kapcsolatkészletét tárolja. A kód többször is meghívja az Exec() metódust, hogy különböző DDL-parancsokat futtasson. A kód a Prepare() és az Exec() metódussal előkészített utasításokat is futtat különböző paraméterekkel három sor beszúrásához. A rendszer minden alkalommal egyéni checkError() metódust használ a hibák ellenőrzéséhez és a kilépéshez.
Cserélje le a host
, database
, user
és password
állandókat a saját értékeire.
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.")
}
Adatok beolvasása
A következő kóddal csatlakozhat, és beolvashatja az adatokat a SELECT SQL-utasítással.
A kód három csomagot importál: az sql package és a go sql driver for mysql csomagot illesztőként a MySQL-hez készült Azure adatbázissal való kommunikációhoz, illetve az fmt package csomagot a nyomtatott bemenetekhez és kimenetekhez a parancssoron.
A kód meghívja az sql.Open() metódust a MySQL-hez készült Azure-adatbázishoz való csatlakozáshoz, majd a db.Ping() metódussal ellenőrzi a kapcsolatot. A rendszer a folyamat során adatbázis-leírót használ, amely az adatbázis-kiszolgáló kapcsolatkészletét tárolja. A kód meghívja a Query() metódust a kiválasztott parancs futtatásához. Ezután a Next() metódust futtatja az eredmények közötti iterációhoz, a Scan() használatával elemzi az oszlopértékeket, és menti az értéket a változókba. A rendszer minden alkalommal egyéni checkError() metódust használ a hibák ellenőrzéséhez és a kilépéshez.
Cserélje le a host
, database
, user
és password
állandókat a saját értékeire.
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.")
}
Adatok frissítése
Az alábbi kód használatával csatlakozhat és végezheti el az adatok módosítását egy UPDATE SQL-utasítás segítségével.
A kód három csomagot importál: az sql package és a go sql driver for mysql csomagot illesztőként a MySQL-hez készült Azure adatbázissal való kommunikációhoz, illetve az fmt package csomagot a nyomtatott bemenetekhez és kimenetekhez a parancssoron.
A kód meghívja az sql.Open() metódust a MySQL-hez készült Azure-adatbázishoz való csatlakozáshoz, majd a db.Ping() metódussal ellenőrzi a kapcsolatot. A rendszer a folyamat során adatbázis-leírót használ, amely az adatbázis-kiszolgáló kapcsolatkészletét tárolja. A kód meghívja az Exec() metódust a frissítési parancs futtatásához. A rendszer minden alkalommal egyéni checkError() metódust használ a hibák ellenőrzéséhez és a kilépéshez.
Cserélje le a host
, database
, user
és password
állandókat a saját értékeire.
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.")
}
Adatok törlése
A következő kód használatával csatlakozhat, és eltávolíthatja az adatokat a DELETE SQL-utasítással.
A kód három csomagot importál: az sql package és a go sql driver for mysql csomagot illesztőként a MySQL-hez készült Azure adatbázissal való kommunikációhoz, illetve az fmt package csomagot a nyomtatott bemenetekhez és kimenetekhez a parancssoron.
A kód meghívja az sql.Open() metódust a MySQL-hez készült Azure-adatbázishoz való csatlakozáshoz, majd a db.Ping() metódussal ellenőrzi a kapcsolatot. A rendszer a folyamat során adatbázis-leírót használ, amely az adatbázis-kiszolgáló kapcsolatkészletét tárolja. A kód meghívja az Exec() metódust a törlési parancs futtatásához. A rendszer minden alkalommal egyéni checkError() metódust használ a hibák ellenőrzéséhez és a kilépéshez.
Cserélje le a host
, database
, user
és password
állandókat a saját értékeire.
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.")
}
Az erőforrások eltávolítása
A rövid útmutató során használt összes erőforrás törléséhez törölje az erőforráscsoportot az alábbi paranccsal:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes