Hızlı Başlangıç: PostgreSQL için Azure Veritabanı - Tek Sunucu'da verileri bağlamak ve sorgulamak için Go dilini kullanma

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Tek Sunucu

Önemli

PostgreSQL için Azure Veritabanı - Tek Sunucu kullanımdan kaldırma yolundadır. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya yükseltmenizi kesinlikle öneririz. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya geçiş hakkında daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı Tek Sunucuya ne oluyor?.

Bu hızlı başlangıçta, Go dilinde (golang) yazılmış kod kullanılarak PostgreSQL için Azure Veritabanı’na nasıl bağlanılacağı gösterilmiştir. Hızlı başlangıçta, veritabanında verileri sorgulamak, eklemek, güncelleştirmek ve silmek için SQL deyimlerinin nasıl kullanılacağı da gösterilmiştir. Bu makalede, Go kullanarak geliştirmeyle ilgili bilgi sahibi olduğunuz ve PostgreSQL için Azure Veritabanı ile çalışmaya yeni başladığınız varsayılır.

Önkoşullar

Bu hızlı başlangıçta, başlangıç noktası olarak şu kılavuzlardan birinde oluşturulan kaynaklar kullanılmaktadır:

Go ve pq bağlayıcısını yükleme

Makinenize Go’yu ve Pure Go Postgres sürücüsünü (pq) yükleyin. Platformunuza bağlı olarak, uygun adımları izleyin:

Windows

  1. Yükleme yönergelerine uygun olarak Microsoft Windows için Go’yu indirin ve yükleyin.

  2. Başlat menüsünden komut istemini başlatın.

  3. Projeniz içinmkdir %USERPROFILE%\go\src\postgresqlgo gibi bir klasör oluşturun.

  4. Dizini değiştirerek proje klasörünüze geçin; örneğin, cd %USERPROFILE%\go\src\postgresqlgo.

  5. GOPATH için ortam değişkenini kaynak kod dizinine işaret edecek şekilde ayarlayın. set GOPATH=%USERPROFILE%\go.

  6. go get github.com/lib/pq komutunu çalıştırarak Pure Go Postgres sürücüsünü (pq) yükleyin.

    Özetle, Go’yu yükleyin ve ardından komut isteminde şu komutları çalıştırın:

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

Linux (Ubuntu)

  1. Bash kabuğunu başlatın.

  2. sudo apt-get install golang-go komutunu çalıştırarak Go'yu yükleyin.

  3. Giriş dizininizde projeniz için mkdir -p ~/go/src/postgresqlgo/ gibi bir klasör oluşturun.

  4. Dizini değiştirerek klasöre geçin; örneğin, cd ~/go/src/postgresqlgo/.

  5. GOPATH ortam değişkenini geçerli bir kaynak dizine, örneğin geçerli giriş dizininizin go klasörüne işaret edecek şekilde ayarlayın. Bash kabuğunda export GOPATH=~/go komutunu çalıştırarak geçerli kabuk oturumu için GOPATH olarak go dizinini ayarlayın.

  6. go get github.com/lib/pq komutunu çalıştırarak Pure Go Postgres sürücüsünü (pq) yükleyin.

    Özetle, şu bash komutlarını çalıştırın:

    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. Platformunuza uygun yükleme yönergelerine göre Go’yu indirip yükleyin.

  2. Bash kabuğunu başlatın.

  3. Giriş dizininizde projeniz için mkdir -p ~/go/src/postgresqlgo/ gibi bir klasör oluşturun.

  4. Dizini değiştirerek klasöre geçin; örneğin, cd ~/go/src/postgresqlgo/.

  5. GOPATH ortam değişkenini geçerli bir kaynak dizine, örneğin geçerli giriş dizininizin go klasörüne işaret edecek şekilde ayarlayın. Bash kabuğunda export GOPATH=~/go komutunu çalıştırarak geçerli kabuk oturumu için GOPATH olarak go dizinini ayarlayın.

  6. go get github.com/lib/pq komutunu çalıştırarak Pure Go Postgres sürücüsünü (pq) yükleyin.

    Özetle, Go’yu yükleyin ve ardından şu bash komutlarını çalıştırın:

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

Bağlantı bilgilerini alma

PostgreSQL için Azure Veritabanı'na bağlanmak üzere gereken bağlantı bilgilerini alın. Tam sunucu adına ve oturum açma kimlik bilgilerine ihtiyacınız vardır.

  1. Azure Portal’da oturum açın.
  2. Azure portalında sol taraftaki menüden Tüm kaynaklar'ı seçin ve oluşturduğunuz sunucuyu (mydemoserver gibi) arayın.
  3. Sunucu adını seçin.
  4. Sunucunun Genel Bakış panelinden Sunucu adı ile Sunucu yöneticisi oturum açma adı’nı not alın. Parolanızı unutursanız, bu panelden parolayı da sıfırlayabilirsiniz. PostgreSQL için Azure Veritabanı sunucu adı

Go kodunu derleme ve çalıştırma

  1. Golang kodlarını yazmak için Microsoft Windows’da Not Defteri, Ubuntu’da VI veya Nano, macOS’da TextEdit gibi düz metin düzenleyicilerini kullanabilirsiniz. Daha zengin bir Etkileşimli Geliştirme Ortamı (IDE) tercih ediyorsanız Jetbrains goland, Microsoft tarafından Visual Studio Code veya Atom'u deneyin.
  2. Aşağıdaki bölümlerde yer alan Golang kodunu metin dosyalarına yapıştırın ve *.go dosya uzantısıyla proje klasörünüzde (Windows yolu veya Linux yolu %USERPROFILE%\go\src\postgresqlgo\createtable.go~/go/src/postgresqlgo/createtable.gogibi) kaydedin.
  3. Kodda HOST, DATABASE, USER ve PASSWORD sabitlerini bulun ve örnek değerleri kendi değerlerinizle değiştirin.
  4. Komut istemini veya bash kabuğunu başlatın. Dizini değiştirerek proje klasörünüze geçin. Örneğin; Windows’da cd %USERPROFILE%\go\src\postgresqlgo\. Linux'ta cd ~/go/src/postgresqlgo/. Belirtilen IDE ortamlarından bazıları kabuk komutları gerektirmeden hata ayıklama ve çalışma zamanı özellikleri sunar.
  5. Uygulamayı derlemek ve çalıştırmak için go run createtable.go komutunu yazarak kodu çalıştırın.
  6. Alternatif olarak, kodu yerel bir uygulamada derlemek için go build createtable.go komutunu kullanın, ardından uygulamayı çalıştırmak için createtable.exe’yi başlatın.

Bağlanma ve tablo oluşturma

CREATE TABLE SQL deyimini kullanarak bir tabloyu bağlamak ve oluşturmak ve ardından INSERT INTO SQL deyimlerini kullanarak tabloya satırlar eklemek için aşağıdaki kodu kullanın.

Kod üç paketi içeri aktarır: sql paketi, PostgreSQL sunucusuyla iletişim kuran sürücü olarak pq paketi ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.

Kod, sql.Open() yöntemini çağırarak PostgreSQL için Azure Veritabanı veritabanına bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. Kod, birkaç SQL komutunu çalıştırmak için birkaç kez Exec() yöntemini çağırır. Her seferinde özel bir checkError() yöntemi hata oluşup olmadığını kontrol eder ve hata oluşmuşsa acil çıkış yapar.

HOST, DATABASE, USER ve PASSWORD parametrelerini kendi değerlerinizle değiştirin.

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

Verileri okuma

SELECT SQL deyimini kullanarak bağlanmak ve verileri okumak için aşağıdaki kodu kullanın.

Kod üç paketi içeri aktarır: sql paketi, PostgreSQL sunucusuyla iletişim kuran sürücü olarak pq paketi ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.

Kod, sql.Open() yöntemini çağırarak PostgreSQL için Azure Veritabanı veritabanına bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. db. Query() yöntemi çağrılarak select sorgusu çalıştırılır ve ortaya çıkan satırlar rows türünden bir değişkende tutulur. Kod, rows.Scan() yöntemini kullanarak geçerli satırdaki sütun veri değerlerini okur ve rows.Next() yineleyicisini kullanarak başka satır kalmayana dek satırları döndürür. Her satırın sütun değerleri konsola yazdırılır. Hata oluşup oluşmadığını denetlemek için her özel checkError() yöntemi kullanıldığında ve hata oluşursa panikle çıkılır.

HOST, DATABASE, USER ve PASSWORD parametrelerini kendi değerlerinizle değiştirin.

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

Verileri güncelleştirme

Bağlanmak ve bir UPDATE SQL deyimi kullanarak verileri güncelleştirmek için aşağıdaki kodu kullanın.

Kod üç paketi içeri aktarır: sql paketi, Postgres sunucusuyla iletişim kuran sürücü olarak pq paketi ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.

Kod, sql.Open() yöntemini çağırarak PostgreSQL için Azure Veritabanı veritabanına bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. Kod, tabloyu güncelleştiren SQL deyimini çalıştırmak için Exec() yöntemini çağırır. Hata oluşup olmadığını kontrol etmek ve hata oluşmuşsa acil çıkış yapmak için özel bir checkError() yöntemi kullanılır.

HOST, DATABASE, USER ve PASSWORD parametrelerini kendi değerlerinizle değiştirin.

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

Veri silme

DELETE SQL deyimini kullanarak bağlanmak ve verileri silmek için aşağıdaki kodu kullanın.

Kod üç paketi içeri aktarır: sql paketi, Postgres sunucusuyla iletişim kuran sürücü olarak pq paketi ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.

Kod, sql.Open() yöntemini çağırarak PostgreSQL için Azure Veritabanı veritabanına bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. Kod, tablodan bir satır silen SQL deyimini çalıştırmak için Exec() yöntemini çağırır. Hata oluşup olmadığını kontrol etmek ve hata oluşmuşsa acil çıkış yapmak için özel bir checkError() yöntemi kullanılır.

HOST, DATABASE, USER ve PASSWORD parametrelerini kendi değerlerinizle değiştirin.

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

Kaynakları temizleme

Bu hızlı başlangıç sırasında kullanılan tüm kaynakları temizlemek için aşağıdaki komutu kullanarak kaynak grubunu silin:

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

Sonraki adımlar