Bağlantı Açma
Bir veritabanına bağlanın
Bağlantı Açma, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
database/sql paketi
Go'nun standart database/sql paketi, genel ve veritabanından bağımsız bir arayüz sağlar. Bu paketi PostgreSQL veya MySQL gibi kullandığınız veritabanına uygun bir sürücüyle birlikte kullanırsınız.
- Tek arayüz, birçok veritabanı
- Yerleşik bağlantı havuzu
- Güvenli parametreli sorgular
Sürücü içe aktarma
Sürücü, kendisini boş bir içe aktarma aracılığıyla kaydeder. Alt çizgi, sürücüyü doğrudan çağırmak için değil, yalnızca kayıt gibi yan etkisi için içe aktardığınız anlamına gelir.
import (
"database/sql"
_ "github.com/lib/pq"
)sql.Open
sql.Open bir sürücü adı ve veri kaynağı adı (DSN) alır. Henüz gerçekten bağlantı kurmaz; yalnızca havuzu hazırlar.
db, err := sql.Open("postgres", "postgres://user:pass@localhost/mydb?sslmode=disable")
if err != nil {
log.Fatal(err)
}db bir havuzdur
Döndürülen *sql.DB tek bir bağlantı değil, birçok gorutin tarafından eşzamanlı olarak güvenle kullanılabilen bir bağlantı havuzudur. Havuzu bir kez açın ve uygulamanızın her yerinde paylaşın.
Ping ile doğrulama
Open işlemi bağlantıyı tembel olarak kurduğundan, gerçekten bağlantı kurmak ve veritabanına erişilebildiğini, kimlik bilgilerinin geçerli olduğunu doğrulamak için Ping kullanın.
if err := db.Ping(); err != nil {
log.Fatal("cannot reach db:", err)
}Havuzu kapatma
Ana işlevinizde veya kurulum işlevinizde db.Close() çağrısını defer edin. Genellikle her sorgudan sonra kapatmazsınız; yalnızca uygulamanın tamamı kapanırken kapatırsınız.
defer db.Close()Havuzu ayarlama
Havuzu SetMaxOpenConns, SetMaxIdleConns ve SetConnMaxLifetime ile denetleyin. Bunlar veritabanını aşırı yüklemekten kaçınır ve eski bağlantıları yenileriyle değiştirir.
db.SetMaxOpenConns(25)
db.SetMaxIdleConns(5)
db.SetConnMaxLifetime(5 * time.Minute)Çalıştırılabilir bellek içi örnek
Gerçek sürücüler ağ üzerinden erişilen bir veritabanı gerektirir; bu nedenle çalıştırılabilir örnek, yalnızca standart kitaplık türlerini kullanarak aynı yaşam döngüsünü benzetilmiş bir açma ve ping işlemiyle gösterir.
package main
import (
"errors"
"fmt"
)
type DB struct{ dsn string }
func Open(driver, dsn string) (*DB, error) {
if dsn == "" {
return nil, errors.New("empty dsn")
}
return &DB{dsn: dsn}, nil
}
func (db *DB) Ping() error { return nil }
func (db *DB) Close() error { return nil }
func main() {
db, err := Open("postgres", "postgres://localhost/mydb")
if err != nil {
fmt.Println("open error:", err)
return
}
defer db.Close()
if err := db.Ping(); err != nil {
fmt.Println("ping error:", err)
return
}
fmt.Println("connected to", db.dsn)
}Bağlam duyarlı çeşitlemeler
Çağrıların son teslim tarihlerine ve iptal işlemine uyması için PingContext, QueryContext ve ExecContext kullanmayı tercih edin. Bir bağlam geçirmek, yanıt vermeyen bir veritabanı çağrısının ne kadar süre engelleyebileceğini sınırlar.
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
err := db.PingContext(ctx)DSN biçimi
Her sürücü kendi DSN biçimini tanımlar. PostgreSQL bir URL kabul eder; MySQL ise user:pass@tcp(host:3306)/dbname biçimini kullanır. Her zaman sürücünün belgelerini inceleyin ve kimlik bilgilerini kod içine sabitlemekten kaçının.
Tek havuz, uzun ömürlü kullanım
Yaygın bir hata, her istek için sql.Open çağırmaktır. Bu, havuz kullanımını bozar ve bağlantıları tüketir. Başlangıçta bir kez açın, *sql.DB değerini saklayın ve her yerde yeniden kullanın.
Hızlı Kontrol
Bağlantı bilginizi sınayın.
Özet
Bağlantı açmayı öğrendiniz:
- Bir sürücüyü boş içe aktarmayla ekleyin, sürücü ve DSN ile sql.Open çağırın
- *sql.DB eşzamanlı kullanıma güvenli bir havuzdur ve bir kez açılır
- Ping gerçek bağlantıyı doğrular
- Havuzu ayarlayın ve bağlam duyarlı yöntemler kullanın
- Kapanışta db.Close() çağrısını defer edin
Sıkça Sorulan Sorular
“Bağlantı Açma” dersi ücretsiz mi?
Evet — “Bağlantı Açma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Bağlantı Açma” dersinde ne öğreneceğim?
Bir veritabanına bağlanın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Bağlantı Açma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bağlantı Açma
- Satırları Sorgulama
- Hazırlanmış İfadeler
- İşlemler