Delen via


Quickstart: Go-taal gebruiken om verbinding te maken en query's uit te voeren op gegevens in Azure Database for PostgreSQL

In deze quickstart ziet u hoe u verbinding maakt met een Azure Database for PostgreSQL met behulp van code die is geschreven in de Go-taal (golang). U ziet hier hoe u SQL-instructies gebruikt om gegevens in de database op te vragen, in te voegen, bij te werken en te verwijderen. In dit artikel wordt ervan uitgegaan dat u bekend bent met de ontwikkeling met Go, maar dat u geen ervaring hebt met het werken met Azure Database for PostgreSQL.

Prerequisites

In deze quickstart worden de resources gebruikt die zijn gemaakt in Een Azure Database voor PostgreSQL maken als startpunt.

Important

U wordt aangeraden een server te gebruiken waarvoor openbare toegang (toegestane IP-adressen) is ingeschakeld voor deze quickstart. Het gebruik van een server met privétoegang (VNet-integratie) die is ingeschakeld om deze quickstart te voltooien, kan extra stappen omvatten die niet worden behandeld.

Zorg ervoor dat het IP-adres waarmee u verbinding maakt, is toegevoegd aan de firewallregels van de server met behulp van Azure Portal of Azure CLI.

Go- en pq-connector installeren

Installeer Go en het Pure Go Postgres-stuurprogramma (pq) op uw eigen computer. Afhankelijk van uw platform volgt u de juiste stappen:

  1. Download en installeer Go voor Microsoft Windows volgens de installatie-instructies.

  2. Open de opdrachtprompt vanuit het Startmenu.

  3. Maak een map voor uw project, bijvoorbeeld mkdir %USERPROFILE%\go\src\postgresqlgo.

  4. Wijzig de map in de projectmap, bijvoorbeeld cd %USERPROFILE%\go\src\postgresqlgo.

  5. Stel de omgevingsvariabele voor GOPATH in zodat deze verwijst naar de broncodemap. set GOPATH=%USERPROFILE%\go.

  6. Voer go mod init uit om een module te maken in de huidige map. Voorbeeld: go mod init postgresqlgo.

    • De <module_path> parameter is over het algemeen een locatie in een GitHub-opslagplaats, zoals github.com/<your_github_account_name>/<directory>.
    • Wanneer u een opdrachtregel-app maakt als test en de app niet publiceert, hoeft deze <module_path> niet naar een werkelijke locatie te verwijzen. Bijvoorbeeld: postgresqlgo.
  7. Installeer het Pure Go Postgres-stuurprogramma (pq) door de opdracht uit te go get github.com/lib/pq voeren.

    Kortom: installeer Go en voer vervolgens deze opdrachten uit in de opdrachtprompt:

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

Verbindingsgegevens ophalen

Haal de verbindingsgegevens op die nodig zijn om verbinding te maken met Azure Database for PostgreSQL. U hebt de volledig gekwalificeerde servernaam en aanmeldingsreferenties nodig.

  1. Meld u aan bij Azure Portal.
  2. Selecteer in het menu aan de linkerkant in de Azure-portal Alle resources en zoek naar de server die u hebt gemaakt (bijvoorbeeld mydemoserver).
  3. Selecteer de servernaam.
  4. Ga naar het venster Overzicht van de server en noteer de Servernaam en de Aanmeldingsnaam van de serverbeheerder. Als u uw wachtwoord vergeet, kunt u het wachtwoord in dit venster opnieuw instellen.

Go-code schrijven en uitvoeren

  1. Als u Golang-code wilt schrijven, kunt u een teksteditor zonder opmaak gebruiken, zoals Kladblok in Microsoft Windows of Nano in Ubuntu of TextEdit in macOS. Als u liever een rijkere Interactive Development Environment (IDE) gebruikt, probeert u GoLand by Jetbrains, Visual Studio Code van Microsoft of Atom.
  2. Plak de Golang-code uit de volgende secties in tekstbestanden en sla deze op in de projectmap met de bestandsextensie *.go, zoals het Windows-pad %USERPROFILE%\go\src\postgresqlgo\createtable.go of het Linux-pad ~/go/src/postgresqlgo/createtable.go.
  3. Zoek de HOST, DATABASEen USERPASSWORD constanten in de code en vervang de voorbeeldwaarden door uw eigen waarden. Er wordt een database met de naam postgres gemaakt bij het aanmaken van uw Azure Database for PostgreSQL-server. U kunt die database of een andere database gebruiken die u hebt gemaakt.
  4. Start de opdrachtprompt of de bash-shell. Wijzig de map in de projectmap. Voorbeeld voor Windows: cd %USERPROFILE%\go\src\postgresqlgo\. Voorbeeld voor Linux: cd ~/go/src/postgresqlgo/. Sommige van de genoemde IDE-omgevingen bieden foutopsporings- en runtimemogelijkheden zonder shell-opdrachten.
  5. Voer de code uit door de opdracht go run createtable.go te typen. De toepassing wordt nu gecompileerd en uitgevoerd.
  6. Als u de code wilt bouwen in een systeemeigen toepassing, kunt u ook go build createtable.go gebruiken en vervolgens createtable.exe starten om de toepassing uit te voeren.

Verbinding maken en een tabel maken

Gebruik de volgende code om verbinding te maken en een tabel te maken met de INSTRUCTIE CREATE TABLE SQL, gevolgd door INSERT INTO SQL-instructies om rijen toe te voegen aan de tabel.

De code importeert drie pakketten: het SQL-pakket, het pq-pakket als stuurprogramma voor communicatie met de PostgreSQL-server en het fmt-pakket voor afgedrukte invoer en uitvoer op de opdrachtregel.

De code roept methode SQL aan. Open() om verbinding te maken met de Azure Database for PostgreSQL-database en controleert de verbinding met behulp van methode db. Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. De code roept de Exec() -methode meerdere keren aan om verschillende SQL-opdrachten uit te voeren. Telkens wanneer een aangepaste checkError()-methode controleert of er een fout is opgetreden en vervolgens een paniekactie uitvoert om af te sluiten als er een fout optreedt.

Vervang de HOST, DATABASEen USERPASSWORD parameters door uw eigen waarden.

package main

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

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "postgres"
	USER     = "mylogin"
	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")
}

Gegevens lezen

Gebruik de volgende code om verbinding te maken en de gegevens te lezen met behulp van een SELECT SQL-instructie.

De code importeert drie pakketten: het SQL-pakket, het pq-pakket als stuurprogramma voor communicatie met de PostgreSQL-server en het fmt-pakket voor afgedrukte invoer en uitvoer op de opdrachtregel.

De code roept methode SQL aan. Open() om verbinding te maken met de Azure Database for PostgreSQL-database en controleert de verbinding met behulp van methode db. Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. De selectiequery wordt uitgevoerd door de methode db aan te roepen . Query(), en de resulterende rijen worden bewaard in een variabele van het type rijen. De code leest de kolomgegevenswaarden in de huidige rij met behulp van de methode rows.Scan() en doorloopt de rijen met behulp van de iterator rows.Next() totdat er geen rijen meer zijn. De kolomwaarden van elke rij worden naar de console afgedrukt. Telkens wanneer een aangepaste checkError()-methode wordt gebruikt om te controleren of er een fout is opgetreden en om af te sluiten als er een fout optreedt.

Vervang de HOST, DATABASEen USERPASSWORD parameters door uw eigen waarden.

package main

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

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "postgres"
	USER     = "mylogin"
	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)
		}
	}
}

Gegevens bijwerken

Gebruik de volgende code om verbinding te maken en de gegevens bij te werken met behulp van een UPDATE SQL-instructie.

De code importeert drie pakketten: het SQL-pakket, het pq-pakket als stuurprogramma om te communiceren met de Postgres-server en het fmt-pakket voor afgedrukte invoer en uitvoer op de opdrachtregel.

De code roept methode SQL aan. Open() om verbinding te maken met de Azure Database for PostgreSQL-database en controleert de verbinding met behulp van methode db. Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. De code roept de Exec() -methode aan om de SQL-instructie uit te voeren waarmee de tabel wordt bijgewerkt. Er wordt een aangepaste checkError()-methode gebruikt om te controleren of er een fout is opgetreden en paniek te maken om af te sluiten als er een fout optreedt.

Vervang de HOST, DATABASEen USERPASSWORD parameters door uw eigen waarden.

package main

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

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "postgres"
	USER     = "mylogin"
	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")
}

Gegevens verwijderen

Gebruik de volgende code om verbinding te maken en de gegevens te verwijderen met behulp van een DELETE SQL-instructie.

De code importeert drie pakketten: het SQL-pakket, het pq-pakket als stuurprogramma om te communiceren met de Postgres-server en het fmt-pakket voor afgedrukte invoer en uitvoer op de opdrachtregel.

De code roept methode SQL aan. Open() om verbinding te maken met de Azure Database for PostgreSQL-database en controleert de verbinding met behulp van methode db. Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. De code roept de Exec() -methode aan om de SQL-instructie uit te voeren waarmee een rij uit de tabel wordt verwijderd. Er wordt een aangepaste checkError()-methode gebruikt om te controleren of er een fout is opgetreden en paniek te maken om af te sluiten als er een fout optreedt.

Vervang de HOST, DATABASEen USERPASSWORD parameters door uw eigen waarden.

package main

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

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "postgres"
	USER     = "mylogin"
	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")
}

De hulpbronnen opschonen

Als u alle resources wilt opschonen die tijdens deze quickstart zijn gebruikt, verwijdert u de resourcegroep. Dit kan met de volgende opdracht:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes