Mulai cepat: Menggunakan bahasa Go untuk menyambungkan dan mengkueri data di Azure Database for PostgreSQL - Server Tunggal

BERLAKU UNTUK: Azure Database for PostgreSQL - Server Tunggal

Penting

Azure Database for PostgreSQL - Server Tunggal berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke Azure Database for PostgreSQL - Server Fleksibel. Untuk informasi selengkapnya tentang migrasi ke Azure Database for PostgreSQL - Server Fleksibel, lihat Apa yang terjadi pada Server Tunggal Azure Database for PostgreSQL?.

Mulai cepat ini menunjukkan cara menyambungkan ke Azure Database for PostgreSQL menggunakan kode yang ditulis dalam bahasa Go (golang). Ini menunjukkan cara menggunakan pernyataan SQL untuk mengkueri, menyisipkan, memperbarui, dan menghapus data dalam database. Artikel ini mengasumsikan Anda terbiasa dengan pengembangan menggunakan Go, tetapi Anda sekarang menggunakan Azure Database for PostgreSQL.

Prasyarat

Mulai cepat ini menggunakan sumber daya yang dibuat di salah satu panduan ini sebagai titik awal:

Memasang konektor Go dan pq

Pasang Go dan driver Pure Go Postgres (pq) pada mesin Anda sendiri. Bergantung pada platform Anda, ikuti langkah-langkah yang sesuai:

Windows

  1. Unduh dan pasang Go for Microsoft Windows sesuai dengan petunjuk penginstalan.

  2. Luncurkan perintah dari menu mulai.

  3. Buat folder untuk proyek Anda, seperti mkdir %USERPROFILE%\go\src\postgresqlgo.

  4. Ubah direktori ke dalam folder proyek, seperti cd %USERPROFILE%\go\src\postgresqlgo.

  5. Atur variabel lingkungan untuk GOPATH untuk menunjuk ke direktori kode sumber. set GOPATH=%USERPROFILE%\go.

  6. Pasang driver Pure Go Postgres (pq) dengan menjalankan perintah go get github.com/lib/pq.

    Singkatnya, pasang Go, lalu jalankan perintah ini di perintah:

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

Linux (Ubuntu)

  1. Luncurkan shell Bash.

  2. Pasang Go dengan menjalankan sudo apt-get install golang-go.

  3. Buat folder untuk proyek Anda di direktori beranda Anda, seperti mkdir -p ~/go/src/postgresqlgo/.

  4. Ubah direktori ke dalam folder, seperti cd ~/go/src/postgresqlgo/.

  5. Setel variabel lingkungan GOPATH untuk menunjuk ke direktori sumber yang valid, seperti folder go direktori beranda Anda saat ini. Di shell bash, jalankan export GOPATH=~/go untuk menambahkan direktori go sebagai GOPATH untuk sesi shell saat ini.

  6. Pasang driver Pure Go Postgres (pq) dengan menjalankan perintah go get github.com/lib/pq.

    Singkatnya, jalankan perintah bash ini:

    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. Unduh dan pasang Go sesuai dengan petunjuk penginstalan yang cocok dengan platform Anda.

  2. Luncurkan shell Bash.

  3. Buat folder untuk proyek Anda di direktori beranda Anda, seperti mkdir -p ~/go/src/postgresqlgo/.

  4. Ubah direktori ke dalam folder, seperti cd ~/go/src/postgresqlgo/.

  5. Setel variabel lingkungan GOPATH untuk menunjuk ke direktori sumber yang valid, seperti folder go direktori beranda Anda saat ini. Di shell bash, jalankan export GOPATH=~/go untuk menambahkan direktori go sebagai GOPATH untuk sesi shell saat ini.

  6. Pasang driver Pure Go Postgres (pq) dengan menjalankan perintah go get github.com/lib/pq.

    Singkatnya, pasang Go, lalu jalankan perintah bash ini:

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

Mendapatkan informasi koneksi

Dapatkan informasi terkait koneksi yang diperlukan untuk menyambungkan ke Azure Database for PostgreSQL. Anda memerlukan nama server dan kredensial untuk masuk yang sepenuhnya memenuhi syarat.

  1. Masuk ke portal Azure.
  2. Dari menu sebelah kiri di portal Microsoft Azure, pilih Semua sumber daya, lalu cari server yang telah Anda buat (seperti mydemoserver).
  3. Pilih nama server.
  4. Dari panel server Gambaran Umum, buat catatan Nama server dan Nama untuk masuk admin server. Jika lupa kata sandi, Anda juga dapat mengatur ulang kata sandi dari panel ini. Nama server Azure Database for PostgreSQL

Bangun dan jalankan kode Go

  1. Untuk menulis kode Golang, Anda dapat menggunakan editor teks biasa, seperti Notepad di Microsoft Windows, vi atau Nano di Ubuntu, atau TextEdit di macOS. Jika Anda lebih suka Interactive Development Environment (IDE) yang lebih beragam, coba GoLand oleh Jetbrains, Visual Studio Code oleh Microsoft, atau Atom.
  2. Tempelkan kode Golang dari bagian berikut ke dalam file teks, dan simpan ke folder proyek Anda dengan ekstensi file *.go, seperti jalur Windows %USERPROFILE%\go\src\postgresqlgo\createtable.go atau jalur Linux ~/go/src/postgresqlgo/createtable.go.
  3. Temukan HOST, DATABASE, USER, dan PASSWORD konstanta dalam kode, dan ganti nilai contoh dengan nilai Anda sendiri.
  4. Luncurkan perintah atau shell bash. Ubah direktori ke folder proyek Anda. Misalnya, di Windows cd %USERPROFILE%\go\src\postgresqlgo\. Di Linux cd ~/go/src/postgresqlgo/. Beberapa lingkungan IDE yang disebutkan menawarkan kemampuan debug dan runtime bahasa umum tanpa memerlukan perintah shell.
  5. Jalankan kode dengan mengetikkan perintah go run createtable.go untuk mengompilasi aplikasi dan menjalankannya.
  6. Atau, untuk membangun kode menjadi aplikasi asli, go build createtable.go, lalu luncurkan createtable.exe untuk menjalankan aplikasi.

Menyambungkan dan membuat tabel

Gunakan kode berikut untuk menyambungkan dan membuat tabel menggunakan pernyataan SQL CREATE TABLE, diikuti dengan pernyataan SQL INSERT INTO untuk menambahkan baris ke dalam tabel.

Kode ini mengimpor tiga paket: paket sql, paket pq sebagai driver untuk berkomunikasi dengan server PostgreSQL, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode memanggil metode sql.Open() untuk menyambungkan ke database Azure Database for PostgreSQL, dan periksa koneksi menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kode ini memanggil metode Exec() beberapa kali untuk menjalankan beberapa perintah SQL. Setiap kali metode checkError() kustom memeriksa apakah terjadi kesalahan dan panik untuk keluar jika terjadi kesalahan.

Ganti parameter HOST, DATABASE, USER, dan PASSWORD dengan nilai Anda sendiri.

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")
}

Membaca data

Gunakan kode berikut untuk menyambungkan dan membaca data menggunakan pernyataan SQL SELECT.

Kode ini mengimpor tiga paket: paket sql, paket pq sebagai driver untuk berkomunikasi dengan server PostgreSQL, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode memanggil metode sql.Open() untuk menyambungkan ke database Azure Database for PostgreSQL, dan periksa koneksi menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kueri tertentu dijalankan dengan memanggil metode db.Query(), dan baris yang dihasilkan disimpan dalam variabel jenis baris. Kode membaca nilai data kolom di baris saat ini menggunakan metode rows.Scan() dan perulangan di atas baris menggunakan iterator rows.Next() hingga tidak ada baris lagi. Setiap nilai kolom baris dicetak ke konsol. Setiap kali metode checkError() kustom digunakan untuk memeriksa apakah terjadi kesalahan dan panik untuk keluar jika terjadi kesalahan.

Ganti parameter HOST, DATABASE, USER, dan PASSWORD dengan nilai Anda sendiri.

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)
		}
	}
}

Memperbarui data

Gunakan kode berikut untuk menyambungkan dan memperbarui data menggunakan Pernyataan SQL UPDATE.

Kode ini mengimpor tiga paket: paket sql, paket pq sebagai driver untuk berkomunikasi dengan server Postgres, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode memanggil metode sql.Open() untuk menyambungkan ke database Azure Database for PostgreSQL, dan periksa koneksi menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kode memanggil metode Exec() untuk menjalankan pernyataan SQL yang memperbarui tabel. Metode checkError() kustom digunakan untuk memeriksa apakah terjadi kesalahan dan panik untuk keluar jika terjadi kesalahan.

Ganti parameter HOST, DATABASE, USER, dan PASSWORD dengan nilai Anda sendiri.

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")
}

Menghapus data

Gunakan kode berikut untuk menyambungkan dan menghapus data menggunakan pernyataan SQL DELETE.

Kode ini mengimpor tiga paket: paket sql, paket pq sebagai driver untuk berkomunikasi dengan server Postgres, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode memanggil metode sql.Open() untuk menyambungkan ke database Azure Database for PostgreSQL, dan periksa koneksi menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kode memanggil metode Exec() untuk menjalankan pernyataan SQL yang menghapus baris dari tabel. Metode checkError() kustom digunakan untuk memeriksa apakah terjadi kesalahan dan panik untuk keluar jika terjadi kesalahan.

Ganti parameter HOST, DATABASE, USER, dan PASSWORD dengan nilai Anda sendiri.

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")
}

Membersihkan sumber daya

Untuk membersihkan semua sumber daya yang digunakan selama mulai cepat ini, hapus grup sumber daya menggunakan perintah berikut:

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

Langkah berikutnya