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:

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:

  1. Töltse le és telepítse a Microsoft Windowshoz készült Go-t a telepítési utasítások szerint.

  2. Nyissa meg a parancssort a Start menüből.

  3. Hozzon létre egy mappát a projekt számára, például mkdir %USERPROFILE%\go\src\mysqlgo.

  4. Nyissa meg a projektmappát (például cd %USERPROFILE%\go\src\mysqlgo).

  5. Ú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.

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

  1. Jelentkezzen be az Azure Portalra.
  2. 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).
  3. Kattintson a kiszolgálónévre.
  4. 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. Azure Database for MySQL server name

Go kód felépítése és futtatása

  1. 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.
  2. 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).
  3. Keresse meg a HOST, a DATABASE, a USER és a PASSWORD állandót a kódban, és a példaértékeket cserélje le a saját értékeire.
  4. 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.
  5. 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.
  6. 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 a createtable.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.")
}

Clean up resources

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

További lépések