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/

  • 相关阅读:
    [dll注入实现IAT勾取] 计算器显示中文
    [记事本API Hook] 调试器 勾取 WriteFile()Api
    [DLL注入的方法]进程创建期修改PE输入表法
    [DLL注入的方法]静态修改PE输入表法
    [1]编程实现加载驱动
    [保护模式]测试一致代码段
    [保护模式]联系1 三环访问高2G
    15.[保护模式]TSS任务门
    ERP中HR模块的操作与设计--开源软件诞生26
    ERP的主数据的操作与设计--开源软件诞生25
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11675563.html
Copyright © 2011-2022 走看看