Go アプリケーションで GORM を使用して Postgres データベースに接続する
Postgres は、その多くの機能と使いやすさから、人気のある SQL データベースの 1 つです。Postgres は ACID に準拠しており、マルチバージョン同時実行制御、非同期レプリケーション、ネストされたトランザクション、先行書き込みログなどの機能を備えています。他の多くの機能とともに、これらの機能により、Postgres は頼りになる SQL データベース管理システムになっています。
Go エコシステムには、Postgres を含むさまざまな DBMS と対話するための多くのパッケージがあります。Go は、データベース ドライバーを使用して SQL データベースを操作するための組み込みのdatabase/sqlパッケージを提供します。Go データ構造を使用すると、GORM などの一般的なサードパーティの ORM を統合して、データベースと簡単にやり取りできます。
GORM と Postgres を使い始める
GORM パッケージは、Go エコシステムで最も人気のある ORM の 1 つです。これは、開発者にとって使いやすく、機能が豊富で、database/sqlパッケージに基づいて構築されているためです。
GORM は、自動移行、ロギング、準備済みステートメント、トランザクション、およびシャーディングの機能を提供します。このパッケージは、構造体やその他の組み込みデータ型を使用したコード ファーストのアプローチを採用しています。
作業ディレクトリで次の端末コマンドを実行して、GORM パッケージをプロジェクトの依存関係に追加します。
go get gorm.io/gorm\n
GORM パッケージを動作させるには、データベース ドライバーが必要です。GORM は、一般的な DBMS 用のデータベース ドライバーを提供します。作業ディレクトリで次のコマンドを実行して、GORM Postgresドライバーをインストールします。
go get gorm.io/driver/postgres\n
GORM を使用して Postgres と Go を接続する
これらのパッケージを Go ファイルにインポートして、ORM とデータベース ドライバーを操作します。logパッケージを使用してエラーをコンソールに記録し、fmtパッケージを使用して出力を出力します。
import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n
実行環境で Postgres データベースに接続するには、接続文字列が必要です。接続文字列を構成するフィールドのモデルとして構造体を使用できます。構造体を使用すると、特に依存性注入の場合に、さまざまな値の変更とテストが容易になります。
接続文字列を構成するフィールドの構造体モデルの例を次に示します。
type Config struct {\n Host string\n Port string\n Password string\n User string\n DBName string\n SSLMode string\n}\n
以下は、データベース接続の典型的な関数です。接続ステータスに応じて、接続インスタンスとエラーを返します。
func NewConnection() (*gorm.DB, error) {\n return db, nil\n}\n
接続構造体モデルをインスタンス化し、Postgres データベースのフィールドに値を入力できます。
configurations: = Config{\n Host: "database_Host",\n Port: "database_Port",\n Password: "database_Password",\n User: "database_User",\n DBName: "database_Name",\n SSLMode: "false",\n }\n dsn: = fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", configurations.Host, configurations.Port, configurations.User, configurations.Password, configurations.DBName, configurations.SSLMode)\n
dsn変数は、Sprintfフォーマット メソッドと Go 文字列フォーマット動詞を使用して、Config 構造体のフィールドを連結し、 Postgres 接続文字列を設定します。
Openメソッドを使用して、GORM とのデータベース接続を開くことができます。Openメソッドは、データベース ドライバーから開いている接続を受け取り、GORM パッケージのConfigタイプからオプションの構成のリストを受け取ります。接続インスタンスとオプションのエラーを返します。
db, err: = gorm.Open(postgres.Open(dsn), &gorm.Config{})\n if err! = nil {\n return db, err\n }\n
データベースに ping を実行して接続ステータスを確認する
データベースに ping を実行して、ブール値の結果またはデータベース接続が無効な場合はエラーを返す関数を使用して、正常性/オンライン ステータスを確認できます。
func PingDb() (bool, error) {\n \n return true, nil\n}\n
データベースに ping を実行するには、新しい接続インスタンスを作成する必要があります。NewConnection関数を使用して接続インスタンスを作成する例を次に示します。
connectionInstance, err: = NewConnection()\n if err! = nil {\n log.Fatalf("The database connection failed %v", err.Error())\n }\n
接続インスタンスを取得したら、接続のDBメソッドを使用してデータベース インスタンスを作成します。
dbConnection, err: = connectionInstance.DB()\n if err! = nil {\n return false, err\n } \n
データベース インスタンスのPingメソッドを使用して、データベースに ping を実行できます。Pingメソッドは、接続が成功した場合、エラーまたはnilを返します。
\n err = dbConnection.Ping()\n if err! = nil {\n return false, err\n } else {\n \n fmt.Println("The connection was successful")\n }\n
実行が成功すると、次のような出力が得られます。
database/sql パッケージを使用して、Go で SQL データベースを操作できます
database/sqlパッケージは拡張可能であり、ほとんどのGo データベース パッケージとドライバーはパッケージを拡張するため、ORM を選択する代わりにプロジェクトでパッケージを使用できます。
GORM は、未加工の SQL を構築するための SQL ビルダーも提供します。これは、サポートされていない操作に役立ちます。
コメントを残す