CodeBlanks Logo Icon CodeBlanks

database/sql paketi

  • Go kursu
  • İleri seviye
  • Ders 25/68
  • 4 dk

database/sql paketinin temelini öğrenirsin.

database/sql paketi

database/sql tüm SQL veritabanları için ortak bir arayüz sunar; asıl iletişimi bir sürücü yapar. Sürücü, yan etki için boş tanımlayıcıyla içe aktarılır ve kendini kaydeder:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

Kodun geri kalanı veritabanından bağımsızdır: MySQL'den PostgreSQL'e geçerken çoğunlukla yalnızca sürücü ve bağlantı dizesi değişir.

sql.DB bir havuzdur

*sql.DB tek bir bağlantı değil, bağlantı havuzudur. Uygulama başında bir kez oluşturulur ve tüm goroutine'ler tarafından paylaşılır; her istekte açıp kapatmak yanlıştır. Havuzu SetMaxOpenConns, SetMaxIdleConns ve SetConnMaxLifetime ile ayarlarsın.

Uygulama Kayıtlı sürücüler

sql.Drivers() kayıtlı sürücü adlarını döndürür. Hiç sürücü içe aktarmadan len(sql.Drivers()) değerini yazdır.

Başlangıç kodu

main.go
package main

import (
    "database/sql"
    "fmt"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "database/sql"
    "fmt"
)

func main() {
    fmt.Println(len(sql.Drivers()))
}

Beklenen çıktı

0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Sürücü paketi neden <code>_</code> ile içe aktarılır?

  • Test için
  • Yalnızca init ile kendini kaydetmesi için Doğru cevap
  • Daha hızlı derlensin diye
  • Gizli kalsın diye

Açıklama: Sürücünün init fonksiyonu sql.Register çağırır; paketin adını kodda kullanmadığın için boş tanımlayıcı gerekir.

2 Sürücüyü kaydet

Soru
import (
    "database/sql"
    ____ "github.com/lib/pq"
)
Cevap
import (
    "database/sql"
    _ "github.com/lib/pq"
)

Açıklama: Boş tanımlayıcı paketi yalnızca init etkisi için içe aktarır.

3 database/sql parçaları

Kavram Anlamı
database/sql Ortak arayüz
Sürücü Veritabanıyla konuşur
*sql.DB Bağlantı havuzu
SetMaxOpenConns Havuz sınırı

İleri seviye bölümündeki tüm dersler