Go アプリケーションで GORM を使用して Postgres データベースに接続する

Go アプリケーションで GORM を使用して Postgres データベースに接続する
あなたのような読者が MUO のサポートを支援します。当サイトのリンクを使用して購入すると、アフィリエイト手数料が発生する場合があります。 続きを読む。

Postgres は、その多くの機能と使いやすさから、人気のある SQL データベースの 1 つです。 Postgres は ACID に準拠しており、マルチバージョン同時実行制御、非同期レプリケーション、ネストされたトランザクション、先行書き込みログなどの機能を備えています。他の多くの機能とともに、これらの機能により、Postgres は頼りになる SQL データベース管理システムになっています。





兵士に手紙を送る場所

Go エコシステムには、Postgres を含むさまざまな DBMS と対話するための多くのパッケージがあります。 Go はビルトインを提供します データベース/SQL データベース ドライバーを使用して SQL データベースを操作するためのパッケージ。 Go データ構造を使用すると、GORM などの一般的なサードパーティの ORM を統合して、データベースと簡単にやり取りできます。





GORM と Postgres の概要

  GORMホームページ

GORM パッケージ Goエコシステムで最も人気のあるORMの1つ の データベース/SQL パッケージ .





GORM は、自動移行、ロギング、準備済みステートメント、トランザクション、およびシャーディングの機能を提供します。このパッケージは、構造体やその他の組み込みデータ型を使用したコード ファーストのアプローチを採用しています。

作業ディレクトリで次の端末コマンドを実行して、GORM パッケージをプロジェクトの依存関係に追加します。



 go get gorm.io/gorm\n

GORM パッケージを動作させるには、データベース ドライバーが必要です。 GORM は、一般的な DBMS 用のデータベース ドライバーを提供します。作業ディレクトリでこのコマンドを実行して、GORM をインストールします。 ポストグル 運転者:

 go get gorm.io/driver/postgres\n

GORM を使用して Postgres と Go を接続する

これらのパッケージを Go ファイルにインポートして、ORM とデータベース ドライバーを操作します。を使用します。 ログ エラーをコンソールに記録するパッケージと fmt 出力を印刷するためのパッケージ。





 import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n

接続するには接続文字列が必要です Postgre データベース 実行環境で。接続文字列を構成するフィールドのモデルとして構造体を使用できます。構造体を使用すると、特に依存性注入の場合に、さまざまな値の変更とテストが容易になります。

接続文字列を構成するフィールドの構造体モデルの例を次に示します。





 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 変数は スプリント フォーマット方法と Go 文字列フォーマット動詞 のフィールドを連結します 設定 Postgres 接続文字列を構築して設定します。

お使いの携帯電話でハッカーを止める方法

以下を使用して、GORM とのデータベース接続を開くことができます。 開ける 方法。の 開ける メソッドは、データベース ドライバから開いている接続と、 設定 GORM パッケージのタイプ。接続インスタンスとオプションのエラーを返します。

     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 を実行するには、新しい接続インスタンスを作成する必要があります。を使用した例を次に示します。 新しい接続 接続インスタンスを作成する関数:

     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 を実行できます。 ピン データベース インスタンスのメソッド。の ピン メソッドがエラーを返すか、 なし 接続が成功した場合。

 \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 データベースを操作できます

データベース/SQL パッケージは拡張可能であり、ほとんどの Go データベース パッケージとドライバーはパッケージを拡張するため、ORM を選択する代わりにプロジェクトでパッケージを使用できます。

GORM は、未加工の SQL を構築するための SQL ビルダーも提供します。これは、サポートされていない操作に役立ちます。