Rövid útmutató: Adatok csatlakoztatása és lekérdezése a Go nyelv használatával az Önálló Azure Database for PostgreSQL-kiszolgálón

A KÖVETKEZŐKRE VONATKOZIK: Azure Database for PostgreSQL – Önálló kiszolgáló

Fontos

Azure Database for PostgreSQL – Az önálló kiszolgáló a kivezetési útvonalon van. Határozottan javasoljuk, hogy frissítsen az Azure Database for PostgreSQL rugalmas kiszolgálóra. A rugalmas Azure Database for PostgreSQL-kiszolgálóra való migrálással kapcsolatos további információkért lásd: Mi történik az önálló Azure Database for PostgreSQL-kiszolgálóval?

Ez a rövid útmutató azt ismerteti, hogyan lehet csatlakozni a PostgreSQL-hez készült Azure-adatbázishoz Go nyelven írt kóddal (golang). 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. A cikk feltételezi, hogy Ön ismeri a Go-t használó fejlesztéseket, de még járatlan a PostgreSQL-hez készült Azure-adatbázis használatában.

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:

A Go és a pq-összekötő telepítése

Telepítse a Go-t és a Pure Go Postgres illesztőprogramot (pq) a saját számítógépére. Kövesse az egyes platformoknak megfelelő lépéseket:

Windows

  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\postgresqlgo).

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

  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 Pure Go Postgres illesztőt (pq) a go get github.com/lib/pq parancs futtatásával.

    Összefoglalva, telepítse a Go-t, majd futtassa ezeket a parancsokat a parancssorban:

    mkdir  %USERPROFILE%\go\src\postgresqlgo
    cd %USERPROFILE%\go\src\postgresqlgo
    set GOPATH=%USERPROFILE%\go
    go get github.com/lib/pq
    

Linux (Ubuntu)

  1. Indítsa el a Bash felületet.

  2. Telepítse a Go-t a sudo apt-get install golang-go parancs futtatásával.

  3. Hozzon létre egy mappát a projekt számára a kezdőkönyvtárban (például mkdir -p ~/go/src/postgresqlgo/).

  4. Nyissa meg a projektmappát (például cd ~/go/src/postgresqlgo/).

  5. Úgy állítsa be a GOPATH környezeti változót, hogy egy érvényes forráskönyvtárra mutasson, például az aktuális kezdőkönyvtár Go mappájára. A bash felületen futtassa az export GOPATH=~/go parancsot, amellyel a Go könyvtárát GOPATH útvonalként adhatja meg az aktuális felületi munkamenetre.

  6. Telepítse a Pure Go Postgres illesztőt (pq) a go get github.com/lib/pq parancs futtatásával.

    Összefoglalva, futtassa ezeket a bash-parancsokat:

    sudo apt-get install golang-go
    mkdir -p ~/go/src/postgresqlgo/
    cd ~/go/src/postgresqlgo/
    export GOPATH=~/go/
    go get github.com/lib/pq
    

Apple macOS

  1. Töltse le és telepítse a Gót a platformjának megfelelő telepítési utasítások szerint.

  2. Indítsa el a Bash felületet.

  3. Hozzon létre egy mappát a projekt számára a kezdőkönyvtárban (például mkdir -p ~/go/src/postgresqlgo/).

  4. Nyissa meg a projektmappát (például cd ~/go/src/postgresqlgo/).

  5. Úgy állítsa be a GOPATH környezeti változót, hogy egy érvényes forráskönyvtárra mutasson, például az aktuális kezdőkönyvtár Go mappájára. A bash felületen futtassa az export GOPATH=~/go parancsot, amellyel a Go könyvtárát GOPATH útvonalként adhatja meg az aktuális felületi munkamenetre.

  6. Telepítse a Pure Go Postgres illesztőt (pq) a go get github.com/lib/pq parancs futtatásával.

    Összefoglalva, telepítse a Go-t, majd futtassa ezeket a bash-parancsokat:

    mkdir -p ~/go/src/postgresqlgo/
    cd ~/go/src/postgresqlgo/
    export GOPATH=~/go/
    go get github.com/lib/pq
    

Kapcsolatadatok lekérése

Kérje le a PostgreSQL-hez készült Azure-adatbázishoz 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 válassza a Minden erőforrás lehetőséget, majd keresse meg a létrehozott kiszolgálót (például a mydemoservert).
  3. Válassza ki a kiszolgálónevet.
  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 PostgreSQL-kiszolgáló neve

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 egy gazdagabb interaktív fejlesztési környezetet (IDE) szeretne használni, próbálja ki a GoLandot a Jetbrains, a Visual Studio Code-ot a Microsoft vagy az Atom segítségével.
  2. Illessze be a Golang-kódot a következő szakaszokból szövegfájlokba, és mentse a projektmappába a *.go fájlkiterjesztéssel, például a Windows elérési útjával %USERPROFILE%\go\src\postgresqlgo\createtable.go vagy a Linux elérési útjával ~/go/src/postgresqlgo/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 rendszerhéjat. Lépjen a projektmappára. Windows rendszer például a következővel: cd %USERPROFILE%\go\src\postgresqlgo\. Linuxon: cd ~/go/src/postgresqlgo/. A fentiekben említettek közül egyes IDE-környezetek 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 és tábla létrehozása

A következő kód használatával csatlakozhat, és létrehozhat egy táblát a CREATE TABLE SQL-utasítással, majd az INSERT INTO SQL-utasításokkal sorokat adhat hozzá a táblához.

A kód három csomagot importál, az sql package és a pq package csomagot illesztőprogramként a PostgreSQL-kiszolgálóval 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 PostgreSQL szolgáltatáshoz 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ő SQL-parancsokat futtasson. A rendszer minden alkalommal egyéni checkError() metódust hív meg, hogy ellenőrizze a hibákat, és hiba esetén kilépjen.

Cserélje le a HOST, DATABASE, USER és PASSWORD paramétereket a saját értékeire.

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/lib/pq"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {
	// Initialize connection string.
	var connectionString string = fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	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.
	sql_statement := "INSERT INTO inventory (name, quantity) VALUES ($1, $2);"
	_, err = db.Exec(sql_statement, "banana", 150)
	checkError(err)
	_, err = db.Exec(sql_statement, "orange", 154)
	checkError(err)
	_, err = db.Exec(sql_statement, "apple", 100)
	checkError(err)
	fmt.Println("Inserted 3 rows of data")
}

Adatok beolvasása

Az alábbi kód használatával csatlakozhat és végezheti el az adatok olvasását SELECT SQL-utasítás segítségével.

A kód három csomagot importál, az sql package és a pq package csomagot illesztőprogramként a PostgreSQL-kiszolgálóval 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 PostgreSQL szolgáltatáshoz 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 select lekérdezést a db.Query() metódus meghívásával lehet futtatni, és az így kapott sorokat a rendszer egy rows (sorok) típusú változóban tárolja. A kód beolvassa az aktuális sorban található oszlopok adatértékeit a rows.Scan() metódussal, majd a rows.Next() iterátor használatával ismétlődően fut a sorokon, amíg azok el nem fogynak. Minden sor oszlopértéke ki lesz nyomtatva a konzolra. Minden alkalommal, amikor egy egyéni checkError() metódussal ellenőrzi, hogy történt-e hiba, és pánikba esik, hogy hiba történt-e.

Cserélje le a HOST, DATABASE, USER és PASSWORD paramétereket a saját értékeire.

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/lib/pq"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString string = fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database")

	// Read rows from table.
	var id int
	var name string
	var quantity int

	sql_statement := "SELECT * from inventory;"
	rows, err := db.Query(sql_statement)
	checkError(err)
	defer rows.Close()

	for rows.Next() {
		switch err := rows.Scan(&id, &name, &quantity); err {
		case sql.ErrNoRows:
			fmt.Println("No rows were returned")
		case nil:
			fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
		default:
			checkError(err)
		}
	}
}

Adatok frissítése

A következő kód használatával csatlakozhat és frissítheti az adatokat az UPDATE SQL-utasítással.

A kód három csomagot importál, az sql package és a pq package csomagot illesztőprogramként a Postgres-kiszolgálóval 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 PostgreSQL szolgáltatáshoz 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, hogy futtassa a táblát frissítő SQL-utasítást. A rendszer egyéni checkError() metódussal ellenőrzi a hibákat, és hiba esetén kilép.

Cserélje le a HOST, DATABASE, USER és PASSWORD paramétereket a saját értékeire.

package main

import (
  "database/sql"
  _ "github.com/lib/pq"
  "fmt"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString string = 
		fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database")

	// Modify some data in table.
	sql_statement := "UPDATE inventory SET quantity = $2 WHERE name = $1;"
	_, err = db.Exec(sql_statement, "banana", 200)
	checkError(err)
	fmt.Println("Updated 1 row of data")
}

Adatok törlése

Az alábbi kód használatával csatlakozhat és végezheti el az adatok törlését egy DELETE SQL-utasítás segítségével.

A kód három csomagot importál, az sql package és a pq package csomagot illesztőprogramként a Postgres-kiszolgálóval 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 PostgreSQL szolgáltatáshoz 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, hogy futtassa a táblából egy sort törlő SQL-utasítást. A rendszer egyéni checkError() metódussal ellenőrzi a hibákat, és hiba esetén kilép.

Cserélje le a HOST, DATABASE, USER és PASSWORD paramétereket a saját értékeire.

package main

import (
  "database/sql"
  _ "github.com/lib/pq"
  "fmt"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString string = 
		fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database")

	// Delete some data from table.
	sql_statement := "DELETE FROM inventory WHERE name = $1;"
	_, err = db.Exec(sql_statement, "orange")
	checkError(err)
	fmt.Println("Deleted 1 row of data")
}

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

Következő lépések