Maison > développement back-end > Golang > Exploration des sélections de bases de données couramment utilisées en langage Go

Exploration des sélections de bases de données couramment utilisées en langage Go

王林
Libérer: 2024-01-28 08:04:05
original
1213 Les gens l'ont consulté

Exploration des sélections de bases de données couramment utilisées en langage Go

Exploration des sélections de bases de données couramment utilisées en langage Go

引言:
在现代的软件开发中,无论是Web应用、移动应用还是物联网应用,都离不开数据的存储和查询。而在Go语言中,我们有许多优秀的数据库选择。本文将Exploration des sélections de bases de données couramment utilisées en langage Go,并提供具体的代码示例,帮助读者了解和选择适合自己需求的数据库。

一、SQL数据库

  1. MySQL
    MySQL是一种流行的开源关系型数据库管理系统。它支持广泛的功能和特性,如ACID事务、索引、存储过程等。在Go语言中,我们可以使用第三方库"database/sql"操作MySQL数据库。

例如,以下是一个使用MySQL数据库的示例代码:

package main

import (
    "database/sql"
    "fmt"

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

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test")
    if err != nil {
        fmt.Println("Failed to connect to MySQL:", err)
        return
    }
    defer db.Close()

    // 查询数据
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        fmt.Println("Failed to execute query:", err)
        return
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        err := rows.Scan(&id, &name)
        if err != nil {
            fmt.Println("Failed to scan row:", err)
            return
        }
        fmt.Println("ID:", id, "Name:", name)
    }
    if err := rows.Err(); err != nil {
        fmt.Println("Failed to retrieve data:", err)
        return
    }

    // 插入数据
    result, err := db.Exec("INSERT INTO users (name) VALUES (?)", "John")
    if err != nil {
        fmt.Println("Failed to insert data:", err)
        return
    }
    fmt.Println("Insert ID:", result.LastInsertId())
}
Copier après la connexion
  1. PostgreSQL
    PostgreSQL是一种功能强大的开源对象-关系数据库管理系统。它支持复杂的查询、事务和完整性约束等特性。在Go语言中,我们可以使用第三方库"database/sql"和"lib/pq"操作PostgreSQL数据库。

以下是一个使用PostgreSQL数据库的示例代码:

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/lib/pq"
)

func main() {
    db, err := sql.Open("postgres", "user=postgres password=password dbname=mydb sslmode=disable")
    if err != nil {
        fmt.Println("Failed to connect to PostgreSQL:", err)
        return
    }
    defer db.Close()

    // 查询数据
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        fmt.Println("Failed to execute query:", err)
        return
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        err := rows.Scan(&id, &name)
        if err != nil {
            fmt.Println("Failed to scan row:", err)
            return
        }
        fmt.Println("ID:", id, "Name:", name)
    }
    if err := rows.Err(); err != nil {
        fmt.Println("Failed to retrieve data:", err)
        return
    }

    // 插入数据
    result, err := db.Exec("INSERT INTO users (name) VALUES ($1)", "John")
    if err != nil {
        fmt.Println("Failed to insert data:", err)
        return
    }
    fmt.Println("Insert ID:", result.LastInsertId())
}
Copier après la connexion

二、NoSQL数据库

  1. MongoDB
    MongoDB是一种基于文档的NoSQL数据库。它以JSON风格的文档存储数据,支持动态查询和灵活的数据模型。在Go语言中,我们可以使用第三方库"go.mongodb.org/mongo-driver"操作MongoDB数据库。

以下是一个使用MongoDB数据库的示例代码:

package main

import (
    "context"
    "fmt"
    "log"
    "time"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

type User struct {
    ID   string
    Name string
}

func main() {
    client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
    if err != nil {
        log.Fatal(err)
    }

    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()

    err = client.Connect(ctx)
    if err != nil {
        log.Fatal(err)
    }
    defer client.Disconnect(ctx)

    collection := client.Database("test").Collection("users")

    // 查询数据
    cur, err := collection.Find(ctx, bson.D{})
    if err != nil {
        log.Fatal(err)
    }
    defer cur.Close(ctx)

    for cur.Next(ctx) {
        var user User
        if err := cur.Decode(&user); err != nil {
            log.Fatal(err)
        }
        fmt.Println("ID:", user.ID, "Name:", user.Name)
    }
    if err := cur.Err(); err != nil {
        log.Fatal(err)
    }

    // 插入数据
    user := User{ID: "1", Name: "John"}
    _, err = collection.InsertOne(ctx, user)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Insert ID:", user.ID)
}
Copier après la connexion

总结:
本文探索了Go语言中常用的数据库选择,包括SQL数据库(如MySQL和PostgreSQL)和NoSQL数据库(如MongoDB)。通过具体的代码示例,读者可以了解到如何使用这些数据库,并根据自己的需求选择适合的数据库。当然,这些数据库仅仅是众多选择中的一部分,读者也可以根据具体的项目需求选择其他数据库。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal