zoukankan      html  css  js  c++  java
  • ent 基本使用十一 sql.DB 集成

    这个功能是github中大家提的比较多的一个,所以官方也暴露了相关的api

    配置sql.DB

    • 一种方式
    package main
    import (
        "time"
        "<your_project>/ent"
        "github.com/facebookincubator/ent/dialect/sql"
    )
    func Open() (*ent.Client, error) {
        drv, err := sql.Open("mysql", "<mysql-dsn>")
        if err != nil {
            return nil, err
        }
        // Get the underlying sql.DB object of the driver.
        db := drv.DB()
        db.SetMaxIdleConns(10)
        db.SetMaxOpenConns(100)
        db.SetConnMaxLifetime(time.Hour)
        return ent.NewClient(ent.Driver(drv)), nil
    }
     
     
    • 第二种方式
    package main
    import (
        "database/sql"
        "time"
        "<your_project>/ent"
        entsql "github.com/facebookincubator/ent/dialect/sql"
    )
    func Open() (*ent.Client, error) {
        db, err := sql.Open("mysql", "<mysql-dsn>")
        if err != nil {
            return nil, err
        }
        db.SetMaxIdleConns(10)
        db.SetMaxOpenConns(100)
        db.SetConnMaxLifetime(time.Hour)
        // Create an ent.Driver from `db`.
        drv := entsql.OpenDB("mysql", db)
        return ent.NewClient(ent.Driver(drv)), nil
    }
     

    集成监控

    方便分析sql

    package main
    import (
        "context"
        "database/sql"
        "database/sql/driver"
        "<project>/ent"
        "contrib.go.opencensus.io/integrations/ocsql"
        "github.com/go-sql-driver/mysql"
        entsql "github.com/facebookincubator/ent/dialect/sql"
    )
    type connector struct {
        dsn string
    }
    func (c connector) Connect(context.Context) (driver.Conn, error) {
        return c.Driver().Open(c.dsn)
    }
    func (connector) Driver() driver.Driver {
        return ocsql.Wrap(
            mysql.MySQLDriver{},
            ocsql.WithAllTraceOptions(),
            ocsql.WithRowsClose(false),
            ocsql.WithRowsNext(false),
            ocsql.WithDisableErrSkip(true),
        )
    }
    // Open new connection and start stats recorder.
    func Open(dsn string) *ent.Client {
        db := sql.OpenDB(connector{dsn})
        // Create an ent.Driver from `db`.
        drv := entsql.OpenDB("mysql", db)
        return ent.NewClient(ent.Driver(drv))
    }

    参考资料

    https://entgo.io/docs/sql-integration/

  • 相关阅读:
    JSP中文乱码问题
    PLSQLDeveloper 提示不能初始化?
    Sublime Text3 (转) 配置 以及快捷键配置
    收藏博客
    Struts2 验证框架 validation.xml 常用的验证规则
    正则表达式
    Frameset 框架集 导航栏 的使用
    nginx + tomcat + memcached 做负载均衡及session同步
    elasticsearch 7.2 集群节点配置
    禁止、允许MySQL root用户远程访问权限
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11675563.html
Copyright © 2011-2022 走看看