Postgres Golang

Postgres Golang



Genellikle Golang olarak anılan Go, Google tarafından oluşturulan, açık kaynaklı, derlenmiş ve statik olarak yazılan bir programlama dilidir. Anlaşılması kolay, hızlı, net ve yüksek performanslı olacak şekilde tasarlanmıştır.

Genellikle basitçe Postgres olarak anılan PostgreSQL, güçlü, açık kaynaklı bir nesne-ilişkisel veritabanı sistemidir. 30 yılı aşkın aktif geliştirme ile sağlamlığı, gelişmiş özellikleri ve önemli standartlara uygunluğu konusunda güçlü bir itibar kazanmıştır.

Tek makinelerden veri ambarlarına veya çok sayıda eşzamanlı kullanıcılı web hizmetlerine kadar kapsamlı iş yüklerinin üstesinden gelmek için tasarlanmıştır. İşlem bütünlüğü ve dayanıklılık sağlar ve çeşitli gelişmiş veri türlerini ve güçlü, esnek veri işleme dilini destekler.







Bu eğitim bize bir PostgreSQL sunucusunu bir Go uygulamasıyla nasıl yapılandıracağımızı ve bağlayacağımızı öğretir.



Gereksinimler:

Programlama Diline Git – Makinenizde Go derleyicisinin kurulu olmasını sağlar.



PostgreSQL Veritabanı – Ayrıca PostgreSQL'in kurulu olması gerekir. Doğrudan makinenize yükleyebilir veya daha basit bir kurulum için bir Docker konteyneri kullanabilirsiniz.





Geliştirme araçları – Visual Studio Code, GoLand vb. gibi Go'yu destekleyen Entegre Geliştirme Ortamı (IDE).

Temel SQL Bilgisi ve Go – PostgreSQL veritabanıyla etkileşim kurmak için SQL'i ve gerçekleştirmeniz gereken çeşitli sorguları anlamanız gerekir. Ayrıca Go dilini temel düzeyde anlamanız gerekir.



Belirtilen gereksinimler karşılandığında, aşağıdaki adımlara geçebiliriz.

Proje Kurulumu

Proje dizin yapımızı kurarak başlayalım. Proje kaynak kodunu saklamanız gereken ana dizini oluşturun.

$ mkdir golang_postgres

Dizine gidin ve yeni bir Go modülü başlatın.

$ CD golang_postgres && modu başlat ana ana git

Gerekli Sürücüleri Kurun

PostgreSQL veri tabanı ile etkileşim kurmak için, Go programlama dili için bir PostgreSQL sürücüsüne ihtiyacımız var.

Bu öğretici için, PostgreSQL veritabanıyla çalışmak için çok çeşitli özellikler sunan pq sürücüsünü kullanıyoruz.

Aşağıdaki komutu çalıştırarak yükleyebilirsiniz:

github.com'u edinin / lib / pq

Veritabanı Oluştur

Bir sonraki adım, yeni bir PostgreSQL veritabanı oluşturmaktır. Bunu yine PostgreSQL kabuğunda yapabiliriz.

$ psql -İÇİNDE postgres

Bu komut sizden postgres şifresini ister. Oturum açıldıktan sonra, yeni bir veritabanı başlatmak için 'veritabanı oluştur' komutunu çalıştırın:

postgres=# veritabanı oluştur golang;
VERİTABANI YARAT

Verilen komut “golang” adında yeni bir veritabanı oluşturur. Veritabanı adını istediğiniz adla değiştirmekten çekinmeyin.

Daha sonra, veritabanına bağlanarak başarıyla oluşturulduğunu doğrulayabilirsiniz.

postgres=# \c golang;
Artık 'golang' veritabanına 'postgres' kullanıcısı olarak bağlısınız.

Ardından, verileri depolamak istediğiniz tabloyu ayarlayın. Bu eğitim için oturum bilgilerini saklayan basit bir tablo oluşturuyoruz.

TABLO OLUŞTUR db_clients (
id SERİ BİRİNCİL ANAHTAR,
isim VARCHAR(100) NULL DEĞİL,
session_time TIMESTAMP BOŞ DEĞİL,
sorgu_sayısı INT VARSAYILAN 0,
active_state BOOLE VARSAYILAN YANLIŞ
);

Verilen sorgu, belirli bir veritabanı sunucusunda oturum açmış istemciler hakkında bilgi depolayan 'db_clients' adlı yeni bir tablo oluşturmalıdır.

Go Uygulamasını PostgreSQL ile Bağlayın

Veritabanını ve veritabanı tablosunu kurduktan sonra devam edebilir ve Go uygulamamızı PostgreSQL sunucusuna nasıl bağlayacağımızı öğrenebiliriz.

Projenizin kökünde bir 'main.go' dosyası oluşturarak başlayın:

$ dokunmak ana.git

Ardından, dosyayı seçtiğiniz metin düzenleyicinizle düzenleyin:

$ Çünkü ana.git

'main.go' dosyasında, kaynak kodunu aşağıda gösterildiği gibi ekleyin:

ana paket

içe aktarmak (
'veritabanı/sql'
'fmt'
'kayıt'

_ 'github.com/lib/pq'
)

ana işlev ( ) {
bağla := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Açık ( 'postgres' , bağlantıStr )
eğer hata ! = sıfır {
günlük. Ölümcül ( hata )
}

eğer hata = db.Ping ( ) ; hata ! = sıfır {
günlük. Ölümcül ( hata )
}

fmt.Println ( 'Veritabanına bağlandı' )
}

Önceki kodda, gerekli modülleri içe aktararak başlıyoruz. Daha sonra ana işlevi tanımlarız. Son olarak, ana işlevde, hedef ana bilgisayarı, veritabanı kullanıcısını, veritabanı şifresini ve gerçek hedef veritabanını belirlememizi sağlayan bağlantı dizesini tanımlarız.

Modül, bağlantı dizesinde aşağıdaki parametreleri destekler:

  • dbname – Bağlanılacak veritabanının adı.
  • user – Kullanıcı olarak oturum açılacaktır.
  • şifre – Kullanıcının şifresi.
  • ana bilgisayar – Bağlanılacak ana bilgisayar. “/” ile başlayan değerler Unix domain soketleri içindir (varsayılan localhost'tur).
  • bağlantı noktası – Bağlanacak bağlantı noktası (varsayılan 5432'dir).
  • sslmode – SSL kullanılıp kullanılmayacağı (varsayılan değer gereklidir; bu, libpq için varsayılan değildir).
  • fallback_application_name – Bir uygulama_adı sağlanmadığında başvurulacak bir uygulama_adı.
  • connect_timeout – Saniye cinsinden maksimum bağlantı bekleme süresi. Sıfır veya belirtilmemiş, süresiz olarak beklemek anlamına gelir.
  • sslcert – Sertifika dosyası konumu. Dosya, PEM kodlu verileri içermelidir.
  • sslkey – Anahtar dosya konumu. Dosya, PEM kodlu verileri içermelidir.
  • sslrootcert – Kök sertifika dosyasının konumu. Dosya, PEM kodlu verileri içermelidir.

Hedef bağlantı özelliklerinizi gerektiği gibi yapılandırabilirsiniz. SSL'yi ve kabul edilen SSLMode parametrelerini yapılandırmak için, adresindeki eğitimimize bakın. https://linuxhint.com/postgres-sslmode .

Bağlantı özelliklerinden memnun kaldığınızda, bağlantının kurulup kurulmadığını test etmek için önceki kodu çalıştırabilirsiniz.

git çalıştır .\main.go

Bağlandıktan sonra aşağıdaki çıktıyı almalısınız:

Veritabanına bağlı

PostgreSQL Tabloya Veri Ekleme

Bir sonraki adım, örnek verileri daha önce oluşturduğumuz tabloya eklemektir. Bunu, ekleme sorgularını bir dizge sabit değeri olarak tanımlayarak ve ardından hedef sorguyu çalıştırmak için db.Exec() işlevini kullanarak yapabiliriz.

Kod aşağıdaki gibidir:

---
insertStatement := `INSERT INTO db_clients (isim, oturum_zamanı, sorgu_of_sayısı, aktif_durum)
DEĞERLER
('psql', '2023-05-26 10:15:00', 10, doğru),
('datagrip', '2023-05-26 09:30:00', 5, doğru),
('kunduz', '2023-05-26 11:00:00', 20, doğru),
('tezgah', '2023-05-26 14:45:00', 15, yanlış),
('uzak', '2023-05-26 13:20:00', 8, doğru);'

_, hata = db.Exec(insertStatement)
eğer hata != sıfır {
log.Fatal(hata)
}

Önceki kodu çalıştırırsanız, belirtilen kayıtları hedef tabloya eklemelidir.

PostgreSQL Sorgu Verileri

Tablodaki satırları sorgulamak için, select deyimini bir dizge olarak tanımlayabilir ve çalıştırmak için db.Query()'yi kullanabiliriz. Next() işlevini kullanarak tablo satırlarını yineleyebilir ve aşağıda gösterildiği gibi yazdırabiliriz:

satırlar, hata := db.Query ( 'db_clients'TAN * SEÇİN' )
eğer hata ! = sıfır {
günlük. Ölümcül ( hata )
}
satırları ertele.Kapat ( )

için satırlar.Sonraki ( ) {
öyleydi İD int
değişken adı dizisi
var sessionTime time.Time
var sayıOfQueries int
var activeState boo

hata := satırlar.Tara ( & İD , & isim, & Oturum süresi, & sayıSorgular, & aktifDevlet )
eğer hata ! = sıfır {
günlük. Ölümcül ( hata )
}

fmt.Printf ( 'Kimlik: %d, Ad: %s, Oturum Süresi: %s, Sorgu Sayısı: %d, Etkin Durum: %t \N ' , İD , ad, oturumZaman, sorguların sayısı, activeState )
}

eğer hata = satırlar.Err ( ) ; hata ! = sıfır {
günlük. Ölümcül ( hata )
}

Önceki kodu çalıştırdıktan sonra, aşağıdaki örnek çıktıda gösterildiği gibi db_clients tablosundaki tüm satırları yazdırmalıdır:

İşte aldın!

Çözüm

Golang kullanarak PostgreSQL veritabanına bağlanmak ve sorgulamak için pq paketini nasıl kullanabileceğimizi araştırdık.