Postgres adalah salah satu database SQL yang populer karena banyak fitur dan kemudahan penggunaannya. Postgres kompatibel dengan ACID dengan fitur-fitur seperti Kontrol Konkurensi Multi-Versi, replikasi asinkron, transaksi bersarang, dan pencatatan di depan. Bersama dengan banyak lainnya, fitur-fitur ini menjadikan Postgres sebagai sistem manajemen basis data SQL.
Ekosistem Go adalah rumah bagi banyak paket untuk berinteraksi dengan berbagai DBMS, termasuk Postgres. Go menyediakan built-in basis data/sql paket untuk bekerja dengan database SQL menggunakan driver database. Menggunakan struktur data Go, Anda dapat mengintegrasikan ORM pihak ketiga yang populer seperti GORM untuk memudahkan interaksi dengan database Anda.
Memulai Dengan GORM dan Postgres
Paket GORM adalah salah satu ORM paling populer di ekosistem Go karena ramah pengembang, kaya fitur, dan dibangun di atas itu basis data/sql kemasan.
GORM menyediakan fungsionalitas untuk migrasi otomatis, logging, pernyataan yang disiapkan, transaksi, dan sharding. Paket mengambil pendekatan kode-pertama menggunakan struct dan tipe data bawaan lainnya.
Jalankan perintah terminal ini di direktori kerja Anda untuk menambahkan paket GORM ke dependensi proyek Anda:
pergi dapatkan gorm.io/gorm\n
Anda memerlukan driver database untuk menjalankan paket GORM. GORM menyediakan driver database untuk DBMS populer. Jalankan perintah ini di direktori kerja Anda untuk menginstal GORM Postgres pengemudi:
pergi dapatkan gorm.io/driver/postgres\n
Menghubungkan Postgres Dengan Go Menggunakan GORM
Impor paket-paket ini ke file Go Anda untuk bekerja dengan ORM dan driver database. Anda akan menggunakan catatan paket untuk mencatat kesalahan ke konsol Anda dan fmt paket untuk mencetak output.
impor (\N "fmt"\N "gorm.io/driver/postgres"\N "gorm.io/gorm"\N "catatan"\n)\n
Anda memerlukan string koneksi untuk terhubung ke basis data Postgres dalam lingkungan berjalan. Anda dapat menggunakan struct sebagai model untuk bidang yang membentuk string koneksi. Menggunakan struct membuatnya lebih mudah untuk mengubah dan menguji nilai yang berbeda, terutama dalam kasus injeksi ketergantungan.
Berikut adalah contoh model struct untuk bidang yang membentuk string koneksi:
jenis Konfigurasi struct {\n Tuan rumah rangkaian\ n Pelabuhan rangkaian\n Kata Sandi rangkaian\ n Pengguna rangkaian\ n Nama DB rangkaian\n SSLMode rangkaian\n}\n
Di bawah ini adalah fungsi khas untuk koneksi database Anda. Ini mengembalikan contoh koneksi dan kesalahan tergantung pada status koneksi.
fungsiKoneksi Baru()(*gorm. DB, kesalahan) {\N kembali db, nol\n}\n
Anda dapat menginstansiasi model struct koneksi dan mengisi kolom dengan nilai di database Postgres Anda.
konfigurasi := Config{\n Host: "database_Host",\n Pelabuhan: "database_Port",\n Kata Sandi: "database_Password",\n Pengguna: "pengguna_database",\n Nama DB: "nama_database",\nSSLMode: "PALSU",\n }\n dsn := fmt. Sprintf("host=%s port=%s pengguna=%s kata sandi=%s dbname=%s sslmode=%s", konfigurasi. Tuan rumah, konfigurasi. Pelabuhan, konfigurasi. Pengguna, konfigurasi. Kata sandi, konfigurasi. DBName, konfigurasi. SSLMode)\n
Itu dsn variabel menggunakan the Sprintf metode pemformatan dan Kata kerja pemformatan string untuk menggabungkan bidang dari Konfigurasi struct dan atur string koneksi Postgres.
Anda dapat membuka koneksi database dengan GORM menggunakan Membuka metode. Itu Membuka metode mengambil koneksi terbuka dari driver database dan daftar konfigurasi opsional dari Konfigurasi jenis paket GORM. Ini mengembalikan instance koneksi dan kesalahan opsional.
db, err := gorm. Buka (postgres. Buka (dsn), &gorm. Konfigurasi{})\n jika salah!= nol {\N kembali db, err\n }\n
Ping Database untuk Memverifikasi Status Koneksi
Anda dapat melakukan ping ke database Anda untuk memverifikasi kesehatan/status online dengan fungsi yang mengembalikan hasil boolean atau kesalahan jika koneksi database tidak valid.
fungsiPingDb()(bool, kesalahan) {\n\n kembaliBENAR, nol\n}\n
Anda harus membuat instance koneksi baru untuk melakukan ping ke database. Berikut adalah contoh menggunakan Koneksi Baru berfungsi untuk membuat instance koneksi:
connectionInstance, err := NewConnection()\n jika salah!= nol {\n log. Fatalf("Koneksi basis data gagal %v", salah. Kesalahan())\n }\n
Setelah Anda mendapatkan instance koneksi, buat instance database dengan DB metode sambungan.
dbConnection, err := connectionInstance. DB()\n jika salah!= nol {\N kembaliPALSU, err\n } \n
Anda dapat melakukan ping ke database dengan Ping metode instance database. Itu Ping metode mengembalikan kesalahan atau nol jika koneksi berhasil.
\n err = dbConnection. Ping()\n jika salah!= nol {\N kembaliPALSU, err\n} kalau tidak {\n \n fmt. Cetak("Koneksi berhasil")\n }\n
Proses yang berhasil akan menghasilkan output yang mirip dengan ini:
Anda Dapat Menggunakan Paket database/sql untuk Bekerja Dengan Database SQL di Go
Itu basis data/sql paket dapat diperpanjang, dan karena sebagian besar paket database Go dan driver memperpanjang paket, Anda dapat menggunakan paket tersebut dalam proyek Anda alih-alih memilih ORM.
GORM juga menyediakan pembuat SQL untuk membuat SQL mentah, yang berguna untuk operasi yang tidak didukung.