ホームページ バックエンド開発 Golang Go でデータベースを使用するにはどうすればよいですか?

Go でデータベースを使用するにはどうすればよいですか?

May 10, 2023 pm 05:48 PM
使用 データベース 言語を移動

Web アプリケーションやその他の複雑なアプリケーションがインターネット上で広く普及するにつれて、データベースは不可欠な部分になりました。 Go は、Web アプリケーションやその他のシステム開発に使用できる人気のあるプログラミング言語です。この記事では、Go でデータベースを使用する方法を説明します。

  1. データベースの選択

データベースの使用を開始する前に、まずアプリケーションに適したデータベースを選択する必要があります。 Go は、MySQL、PostgreSQL、MongoDB などの多くの一般的なデータベースをサポートしています。 ORM (オブジェクト リレーショナル マッパー) ライブラリまたは SQL ジェネレーター ライブラリを使用して、データベースの対話を簡素化することもできます。 ORM ライブラリはオブジェクトをデータベース内のテーブルにマップするライブラリですが、SQL ジェネレーター ライブラリは SQL クエリを作成およびクエリするためのライブラリです。データベースの選択は、アプリケーションのニーズと、さまざまなデータベースの長所と短所の理解に基づいて行う必要があります。

  1. データベース ドライバーのインストール

データベースを選択したら、次のステップはデータベース ドライバーをインストールすることです。 Go にはさまざまなデータベース用のドライバーがあり、Go の標準ライブラリ データベース/SQL またはより高レベルの機能を備えた外部ライブラリのドライバーを使用できます。データベースの公式ドキュメントからドライバーの正しい情報を入手することが重要です。選択したデータベースに応じて要件が異なるため、インストールプロセス中に注意すべき詳細に注意してください。

  1. 接続の確立

データベースを使用する前に、データベースへの接続を確立する必要があります。 Go では、次のコードを使用して MySQL データベースへの接続を作成できます:

package main

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

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/mydb")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    err = db.Ping()
    if err != nil {
        panic(err.Error())
    }

    fmt.Println("Connection established")
}
ログイン後にコピー

この例では、sql.Open() 関数を使用して MySQL データベース接続を開きます。 。 Open() 関数では、MySQL ドライバー (この場合は github.com/go-sql-driver/mysql) を使用して、接続するデータベース名を Go に伝えます。 、ユーザー名、パスワード、アドレス。次に、db.Ping() コマンドを使用してデータベースへの接続が成功したかどうかをテストし、接続が成功したことを確認します。最後に、defer db.Close() を使用して、プログラムが終了する前にデータベース接続が確実に閉じられるようにします。

  1. クエリの実行

データベースへの接続が確立されたら、データベースの使用を開始できます。クエリ ステートメントを実行するには、db.Query() 関数または db.QueryRow() 関数を使用できます。 db.Query() 関数は複数行を返すクエリの実行に使用され、db.QueryRow() 関数は単一行の結果を返すクエリの実行に使用されます。

以下はクエリを実行する例です:

package main

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

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/mydb")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    rows, err := db.Query("SELECT * FROM mytable")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        err = rows.Scan(&id, &name)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println("id:", id, "name:", name)
    }

    err = rows.Err()
    if err != nil {
        panic(err.Error())
    }
}
ログイン後にコピー

上記のコード例では、まず db.Query() を使用して SELECT ステートメントを実行し、結果は rows 変数に格納されます。次に、rows.Close() 関数を使用して結果セットを閉じます。次に、rows.Next() を使用して結果セットの各行をループし、rows.Scan() 関数を使用して結果を変数と照合します。最後に、rows.Err() 関数を使用して、潜在的なエラーを処理します。

  1. 挿入、更新、削除操作を実行する

データベースでは、クエリ操作に加えて、挿入、更新、削除操作もサポートされています。 Go でこれらの操作を実行することはクエリ操作と似ており、異なる関数を使用する必要があります。

挿入操作を実行するには、次のコードを使用できます:

res, err := db.Exec("INSERT INTO mytable (name) VALUES (?)", "John")
if err != nil {
    panic(err.Error())
}
lastInsertID, err := res.LastInsertId()
if err != nil {
    panic(err.Error())
}
fmt.Println("Last inserted ID:", lastInsertID)
ログイン後にコピー

更新操作を実行するには、次のコードを使用できます:

res, err = db.Exec("UPDATE mytable SET name = ? WHERE id = ?", "John Doe", 1)
if err != nil {
    panic(err.Error())
}
rowsAffected, err := res.RowsAffected()
if err != nil {
    panic(err.Error())
}
fmt.Println("Rows affected:", rowsAffected)
ログイン後にコピー

削除を実行するには

res, err = db.Exec("DELETE FROM mytable WHERE id = ?", 1)
if err != nil {
    panic(err.Error())
}
rowsAffected, err = res.RowsAffected()
if err != nil {
    panic(err.Error())
}
fmt.Println("Rows affected:", rowsAffected)
ログイン後にコピー
  1. トランザクションの使用

データベース トランザクションを使用することは、変更を加えるときにデータベースの整合性を確保するために非常に重要です。 Go では、次のコードを使用してトランザクションを使用できます。

tx, err := db.Begin()

stmt, err := tx.Prepare("INSERT INTO mytable (name) VALUES (?)")
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

_, err = stmt.Exec("John")
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

stmt, err = tx.Prepare("UPDATE mytable SET name = ? WHERE id = ?")
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

_, err = stmt.Exec("John Doe", 1)
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

err = tx.Commit()
if err != nil {
    panic(err.Error())
}
ログイン後にコピー

上記のコードでは、まず db.Begin() 関数を使用してトランザクションを開始します。次に、tx.Prepare() 関数を使用して、実行する SQL ステートメントを準備します。次に、stmt.Exec() 関数を使用して SQL ステートメントを実行します。すべての操作が実行された後、tx.Commit() 関数を使用してトランザクションをコミットします。いずれかの操作が失敗した場合は、tx.Rollback() 関数を使用してすべての変更をロールバックします。

  1. 参考

この記事では、Go でデータベースを使用する方法を紹介しました。より高度なデータベース操作の場合は、ORM または SQL ジェネレーター ライブラリを使用して対話を容易にすることができます。特定のデータベースの使用方法の詳細については、関連する公式ドキュメントと Go ライブラリのドキュメントを参照してください。以下にいくつかの参考文献を示します。

  • Golang 用データベース/SQL: https://golang.org/pkg/database/sql/
  • Go MySQL ドライバー: https:// github. com/go-sql-driver/mysql
  • Go PostgreSQL ドライバー: https://github.com/lib/pq
  • MongoDB Go ドライバー: https://github .com/mongodb/モンゴゴードライバー

以上がGo でデータベースを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go 言語でのパフォーマンス テストと単体テストの違い Go 言語でのパフォーマンス テストと単体テストの違い May 08, 2024 pm 03:09 PM

パフォーマンス テストでは、さまざまな負荷の下でアプリケーションのパフォーマンスを評価します。一方、単体テストでは、単一のコード単位の正確性を検証します。パフォーマンス テストは応答時間とスループットの測定に重点を置き、単体テストは関数の出力とコード カバレッジに重点を置きます。パフォーマンス テストは高負荷と同時実行性のある現実の環境をシミュレートしますが、単体テストは低負荷とシリアル条件で実行されます。パフォーマンス テストの目標は、パフォーマンスのボトルネックを特定し、アプリケーションを最適化することですが、単体テストの目標は、コードの正確さと堅牢性を確認することです。

PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル Jun 04, 2024 pm 01:42 PM

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

Golang テクノロジーを使用して分散システムを設計する場合、どのような落とし穴に注意する必要がありますか? Golang テクノロジーを使用して分散システムを設計する場合、どのような落とし穴に注意する必要がありますか? May 07, 2024 pm 12:39 PM

分散システム設計時の Go 言語の落とし穴 Go は、分散システムの開発によく使用される言語です。ただし、Go を使用する場合は注意すべき落とし穴がいくつかあり、システムの堅牢性、パフォーマンス、正確性が損なわれる可能性があります。この記事では、いくつかの一般的な落とし穴を調査し、それらを回避する方法に関する実践的な例を示します。 1. 同時実行性の過剰使用 Go は、開発者が並行性を高めるためにゴルーチンを使用することを奨励する同時実行言語です。ただし、同時実行性を過剰に使用すると、ゴルーチンがリソースをめぐって競合し、コンテキスト切り替えのオーバーヘッドが発生するため、システムが不安定になる可能性があります。実際のケース: 同時実行性の過剰な使用は、サービス応答の遅延とリソースの競合につながり、CPU 使用率の高さとガベージ コレクションのオーバーヘッドとして現れます。

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

Bitget Launchpool とは何ですか? Bitget Launchpool の使用方法? Bitget Launchpool とは何ですか? Bitget Launchpool の使用方法? Jun 07, 2024 pm 12:06 PM

BitgetLaunchpool は、すべての暗号通貨愛好家向けに設計された動的プラットフォームです。 BitgetLaunchpool はそのユニークな製品で際立っています。ここでは、トークンを賭けて、エアドロップ、高額な報酬、初期参加者限定の寛大な賞金プールなど、より多くの報酬のロックを解除できます。 BitgetLaunchpool とは何ですか? BitgetLaunchpool は、ユーザーフレンドリーな利用規約でトークンをステークして獲得できる暗号通貨プラットフォームです。 Launchpool に BGB またはその他のトークンを投資することで、ユーザーは無料のエアドロップや収益を受け取り、寛大なボーナス プールに参加する機会が得られます。質入れられた資産からの収入は T+1 時間以内に計算され、報酬は以下に基づいて計算されます。

機械学習で使用される Golang テクノロジー ライブラリとツール 機械学習で使用される Golang テクノロジー ライブラリとツール May 08, 2024 pm 09:42 PM

Go の機械学習用のライブラリとツールには次のものがあります。 TensorFlow: モデルの構築、トレーニング、デプロイのためのツールを提供する人気のある機械学習ライブラリです。 GoLearn: 一連の分類、回帰、およびクラスタリングのアルゴリズムです。 Gonum: 行列演算と線形代数関数を提供する科学計算ライブラリです。

PHP でデータベース接続エラーを処理する方法 PHP でデータベース接続エラーを処理する方法 Jun 05, 2024 pm 02:16 PM

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

Go WebSocket はどのようにデータベースと統合しますか? Go WebSocket はどのようにデータベースと統合しますか? Jun 05, 2024 pm 03:18 PM

GoWebSocket をデータベースと統合する方法: データベース接続をセットアップする: データベースに接続するには、database/sql パッケージを使用します。 WebSocket メッセージをデータベースに保存する: INSERT ステートメントを使用して、メッセージをデータベースに挿入します。データベースから WebSocket メッセージを取得する: データベースからメッセージを取得するには、SELECT ステートメントを使用します。

See all articles