Snabbstart: Använda Go-språk för att ansluta och fråga efter data i Azure Database for PostgreSQL – enskild server
GÄLLER FÖR: Azure Database for PostgreSQL – enskild server
Viktigt!
Azure Database for PostgreSQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till Azure Database for PostgreSQL – flexibel server. Mer information om hur du migrerar till Azure Database for PostgreSQL – flexibel server finns i Vad händer med Azure Database for PostgreSQL – enskild server?.
Den här snabbstarten visar hur du ansluter till en Azure Database för PostgreSQL med hjälp av kod som skrivits i språket Go (golang). Den visar hur du använder SQL-instruktioner för att fråga, infoga, uppdatera och ta bort data i databasen. Den här artikeln förutsätter att du är van att utveckla i Go, men saknar erfarenhet av Azure Database för PostgreSQL.
Förutsättningar
I den här snabbstarten används de resurser som skapades i någon av följande guider som utgångspunkt:
Installera Go och pq connector
Installera Go och Pure Go Postgres-drivrutinen (pq) på din egen dator. Följ instruktionerna för din plattform:
Windows
Ladda ned och installera Go för Microsoft Windows enligt installationsanvisningarna.
Starta kommandotolken från Start-menyn.
Skapa en mapp för ditt projekt, till exempel
mkdir %USERPROFILE%\go\src\postgresqlgo
.Ändra katalogen till projektmappen, till exempel
cd %USERPROFILE%\go\src\postgresqlgo
.Ange miljövariabeln för GOPATH så att den hänvisar till källkodskatalogen.
set GOPATH=%USERPROFILE%\go
.Installera Pure Go Postgres-drivrutinen (pq) genom att köra
go get github.com/lib/pq
kommandot.Sammanfattningsvis ska du installera Go och sedan köra dessa kommandon i kommandotolken:
mkdir %USERPROFILE%\go\src\postgresqlgo cd %USERPROFILE%\go\src\postgresqlgo set GOPATH=%USERPROFILE%\go go get github.com/lib/pq
Linux (Ubuntu)
Starta Bash-gränssnittet.
Installera Go genom att köra
sudo apt-get install golang-go
.Skapa en mapp för ditt projekt i arbetskatalogen, t.ex
mkdir -p ~/go/src/postgresqlgo/
.’Ändra katalogen till mappen, till exempel
cd ~/go/src/postgresqlgo/
.Ange miljövariabeln GOPATH så att den hänvisar till en giltig källkatalog, exempelvis den aktuella hemkatalogens go-mapp. Kör
export GOPATH=~/go
i bash-gränssnittet och lägg till go-katalogen som GOPATH för den aktuella shell-sessionen.Installera Pure Go Postgres-drivrutinen (pq) genom att köra
go get github.com/lib/pq
kommandot.Sammanfattningsvis ska du köra dessa bash-kommandon:
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
Hämta och installera Go enligt installationsinstruktionerna för din plattform.
Starta Bash-gränssnittet.
Skapa en mapp för ditt projekt i arbetskatalogen, t.ex
mkdir -p ~/go/src/postgresqlgo/
.’Ändra katalogen till mappen, till exempel
cd ~/go/src/postgresqlgo/
.Ange miljövariabeln GOPATH så att den hänvisar till en giltig källkatalog, exempelvis den aktuella hemkatalogens go-mapp. Kör
export GOPATH=~/go
i bash-gränssnittet och lägg till go-katalogen som GOPATH för den aktuella shell-sessionen.Installera Pure Go Postgres-drivrutinen (pq) genom att köra
go get github.com/lib/pq
kommandot.Sammanfattningsvis ska du installera Go och sedan köra dessa bash-kommandon:
mkdir -p ~/go/src/postgresqlgo/ cd ~/go/src/postgresqlgo/ export GOPATH=~/go/ go get github.com/lib/pq
Hämta anslutningsinformation
Hämta den information som du behöver för att ansluta till Azure Database för PostgreSQL. Du behöver det fullständiga servernamnet och inloggningsuppgifter.
- Logga in på Azure-portalen.
- På den vänstra menyn i Azure-portalen väljer du Alla resurser och söker sedan efter den server som du har skapat (till exempel mydemoserver).
- Välj servernamnet.
- På serverpanelen Översikt antecknar du Servernamn och Inloggningsnamn för serveradministratören. Om du glömmer lösenordet kan du även återställa det på den här panelen.
Skapa och köra Go-kod
- Om du vill skriva Golang-kod kan du använda en enkel textredigerare, som Anteckningar i Microsoft Windows, vieller Nano i Ubuntu eller TextEdit i macOS. Om du föredrar en rikare interaktiv utvecklingsmiljö (IDE) kan du prova GoLand by Jetbrains, Visual Studio Code från Microsoft eller Atom.
- Klistra in Golang-koden från följande avsnitt i textfiler och spara i projektmappen med filnamnstillägget *.go, till exempel Windows-sökväg
%USERPROFILE%\go\src\postgresqlgo\createtable.go
eller Linux-sökväg~/go/src/postgresqlgo/createtable.go
. - Leta upp konstanterna
HOST
,DATABASE
,USER
ochPASSWORD
i koden och ersätt exempelvärdena med dina egna värden. - Starta kommandotolken eller bash-gränssnittet. Ändra katalog till din projektmapp. I Windows kan du till exempel använda
cd %USERPROFILE%\go\src\postgresqlgo\
. I Linux kan du användacd ~/go/src/postgresqlgo/
. Några av de IDE-miljöer som nämns erbjuder funktioner för felsökning och körning utan att kräva shell-kommandon. - Kör koden genom att skriva kommandot
go run createtable.go
för att kompilera programmet och köra det. - Alternativt bygger du koden till ett internt program,
go build createtable.go
, och kör sedancreatetable.exe
för att köra programmet.
Ansluta och skapa en tabell
Använd följande kod för att ansluta och skapa en tabell med hjälp av CREATE TABLE-SQL-instruktionen följt av INSERT INTO-SQL-instruktioner för att lägga till rader i tabellen.
Koden importerar tre paket: sql-paketet, pq-paketet (som en drivrutin för att kommunicera med PostgreSQL-servern) och fmt-paketet för skrivna indata och utdata på kommandoraden.
Koden anropar metoden sql.Open() för att ansluta till Azure Database for PostgreSQL-databasen. Anslutningen kontrolleras med hjälp av metoden db.Ping(). En databasreferens som håller anslutningspoolen för databasservern används genomgående. I koden anropas metoden Exec() flera gånger för att köra flera SQL-kommandon. Varje gång körs en anpassad checkError()-metod för att kontrollera om ett fel har uppstått, och i så fall avslutas körningen.
Ersätt parametrarna HOST
, DATABASE
, USER
och PASSWORD
med egna värden.
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")
}
Läsa data
Använd följande kod för att ansluta och läsa data med en SELECT-SQL-instruktion.
Koden importerar tre paket: sql-paketet, pq-paketet (som en drivrutin för att kommunicera med PostgreSQL-servern) och fmt-paketet för skrivna indata och utdata på kommandoraden.
Koden anropar metoden sql.Open() för att ansluta till Azure Database for PostgreSQL-databasen. Anslutningen kontrolleras med hjälp av metoden db.Ping(). En databasreferens som håller anslutningspoolen för databasservern används genomgående. SELECT-frågan körs genom att anropa metoden db.Query(), och resulterande rader förvaras i en variabel av typen rows. Koden läser kolumndatavärden i den aktuella raden med metoden rows.Scan() och loopar igenom raderna med iteratorn rows.Next() tills det inte finns fler rader. Varje rads kolumnvärden skrivs ut till konsolen. Varje gång en anpassad checkError()-metod används för att kontrollera om ett fel har inträffat och få panik för att avsluta om ett fel inträffar.
Ersätt parametrarna HOST
, DATABASE
, USER
och PASSWORD
med egna värden.
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)
}
}
}
Uppdatera data
Använd följande kod för att ansluta och uppdatera data med SQL-instruktionen UPDATE.
Koden importerar tre paket: sql-paketet, pq-paketet (som en drivrutin för att kommunicera med Postgres-servern) och fmt-paketet för skrivna indata och utdata på kommandoraden.
Koden anropar metoden sql.Open() för att ansluta till Azure Database for PostgreSQL-databasen. Anslutningen kontrolleras med hjälp av metoden db.Ping(). En databasreferens som håller anslutningspoolen för databasservern används genomgående. Koden anropar metoden Exec() för att köra SQL-instruktionen som uppdaterar tabellen. Varje gång körs en anpassad checkError()-metod för att kontrollera om ett fel har uppstått, och i så fall avslutas körningen.
Ersätt parametrarna HOST
, DATABASE
, USER
och PASSWORD
med egna värden.
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")
}
Ta bort data
Använd följande kod för att ansluta och läsa data med en DELETE-SQL-instruktion.
Koden importerar tre paket: sql-paketet, pq-paketet (som en drivrutin för att kommunicera med Postgres-servern) och fmt-paketet för skrivna indata och utdata på kommandoraden.
Koden anropar metoden sql.Open() för att ansluta till Azure Database for PostgreSQL-databasen. Anslutningen kontrolleras med hjälp av metoden db.Ping(). En databasreferens som håller anslutningspoolen för databasservern används genomgående. Koden anropar metoden Exec() för att köra SQL-instruktionen som tar bort en rad från tabellen. Varje gång körs en anpassad checkError()-metod för att kontrollera om ett fel har uppstått, och i så fall avslutas körningen.
Ersätt parametrarna HOST
, DATABASE
, USER
och PASSWORD
med egna värden.
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")
}
Rensa resurser
Om du vill rensa alla resurser som används under den här snabbstarten tar du bort resursgruppen med följande kommando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes