db

package
v0.0.0-...-2834284 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2024 License: GPL-3.0 Imports: 21 Imported by: 0

Documentation

Overview

Package db : 数据库模块,封装了常用方法,可缓存数据,可依据配置自动创建myisam引擎的子表,支持mysql和sqlserver

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BoltDB

type BoltDB struct {
	// contains filtered or unexported fields
}

BoltDB bolt数据文件实例

func NewBolt

func NewBolt(f string) (*BoltDB, error)

NewBolt 创建一个新的bolt数据文件

func (*BoltDB) Close

func (b *BoltDB) Close() error

Close 关闭文件数据库

func (*BoltDB) Delete

func (b *BoltDB) Delete(key string, bucket ...string) error

Delete 删除一个值

func (*BoltDB) ForEach

func (b *BoltDB) ForEach(f func(k, v string) error, bucket ...string)

ForEach 遍历所有key,value

func (*BoltDB) Read

func (b *BoltDB) Read(key string, bucket ...string) string

Read 读取一个值

func (*BoltDB) Write

func (b *BoltDB) Write(key, value string, bucket ...string) error

Write 写入一个值

type Conn

type Conn struct {
	// contains filtered or unexported fields
}

Conn sql连接池

func New

func New(opt *Opt) (*Conn, error)

New 新的sql连接池

func (*Conn) AlterMergeTable

func (d *Conn) AlterMergeTable(dbname, tableName, alterStr string, maxSubTables int) error

AlterMergeTable 用于修改mrg-myasim表 tableName为主表名称 tableName和alter语句中的table name必须一致

func (*Conn) DBType

func (d *Conn) DBType() string

func (*Conn) Exec

func (d *Conn) Exec(s string, params ...interface{}) (rowAffected, insertID int64, err error)

Exec 执行语句(insert,delete,update),返回(影响行数,insertId,error),使用事务

s: sql语句 params: 查询参数,对应查询语句中的`?`占位符

func (*Conn) ExecBatch

func (d *Conn) ExecBatch(s []string) (err error)

ExecBatch (maybe unsafe)事务执行多个语句(insert,delete,update)

s: sql语句,不支持占位符,需要使用完整语句

func (*Conn) ExecByDB

func (d *Conn) ExecByDB(dbidx int, s string, params ...interface{}) (rowAffected, insertID int64, err error)

ExecByDB 执行语句(insert,delete,update),返回(影响行数,insertId,error),使用事务

dbidx: 指定数据库名称 s: sql语句 params: 查询参数,对应查询语句中的`?`占位符

func (*Conn) ExecPrepare

func (d *Conn) ExecPrepare(s string, paramNum int, params ...interface{}) (err error)

ExecPrepare 批量执行占位符语句,用于批量执行语句相同但数据内容不同的场景

s: sql语句 paramNum: 占位符数量,为0时自动计算sql语句中`?`的数量 params: 查询参数,对应查询语句中的`?`占位符

func (*Conn) ExecPrepareByDB

func (d *Conn) ExecPrepareByDB(dbidx int, s string, paramNum int, params ...interface{}) (err error)

ExecPrepareByDB 批量执行占位符语句,用于批量执行语句相同但数据内容不同的场景

dbidx: 数据库名称 s: sql语句 paramNum: 占位符数量,为0时自动计算sql语句中`?`的数量 params: 查询参数,对应查询语句中的`?`占位符

func (*Conn) ExecPrepareV2 deprecated

func (d *Conn) ExecPrepareV2(s string, paramNum int, params ...interface{}) (int64, []int64, error)

ExecPrepareV2 批量执行语句(insert,delete,update),返回(影响行数,insertId,error),使用官方的语句参数分离写法,用于批量执行相同语句

Deprecated: use ExecPrepare()

func (*Conn) ExecTx deprecated

func (d *Conn) ExecTx(s string, params ...interface{}) (rowAffected, insertID int64, err error)

ExecTx 执行语句(insert,delete,update),返回(影响行数,insertId,error),使用事务

Deprecated: use Exec()

func (*Conn) ExecV2 deprecated

func (d *Conn) ExecV2(s string, params ...interface{}) (rowAffected, insertID int64, err error)

ExecV2 事务执行语句(insert,delete,update),可回滚,返回(影响行数,insertId,error),使用官方的语句参数分离写法

Deprecated: use Exec()

func (*Conn) GetIdx

func (d *Conn) GetIdx(dbname string) int

GetDBIdx 连接多个数据库的时候,设置默认的数据库名称

func (*Conn) GetName

func (d *Conn) GetName(dbidx int) string

GetName 获取数据库名字

func (*Conn) IsReady

func (d *Conn) IsReady() bool

IsReady 检查状态,仅检查默认库的状态

func (*Conn) MariadbDuplicate2Mysql

func (d *Conn) MariadbDuplicate2Mysql(strsql string) string

MariadbDuplicate2Mysql 将mariadb的insert on duplicate语句修改为mysql的样式 注意:`ON DUPLICATE KEY UPDATE` 需要全大写,用于识别

func (*Conn) MaxDBIdx

func (d *Conn) MaxDBIdx() int

func (*Conn) MergeTable

func (d *Conn) MergeTable(dbname, tableName string, maxSubTables, maxTableSize, maxTableRows int) error

MergeTable 进行分表操作

func (*Conn) ORM

func (d *Conn) ORM(dbidx int) (*gorm.DB, error)

ORM 指定要返回的gorm.db实例

dbname: 数据库名称,不设置时返回默认

func (*Conn) Query

func (d *Conn) Query(s string, rowsCount int, params ...interface{}) (*QueryData, error)

Query 执行查询语句,支持占位符

s: 查询语句 rowsCount: 需要返回的行数 params: 参数

func (*Conn) QueryBig

func (d *Conn) QueryBig(dbidx int, s string, rowsCount int, params ...interface{}) (*QueryData, error)

QueryBig 可尝试用于大数据集的首页查询,执行2次查询,第一次查询总数,第二次查询结果集,并立即返回第一页

s: sql语句 startRow: 起始行号,0开始 rowsCount: 返回数据行数,0-返回全部 params: 查询参数,对应查询语句中的`?`占位符

func (*Conn) QueryByDB

func (d *Conn) QueryByDB(dbidx int, s string, rowsCount int, params ...interface{}) (*QueryData, error)

QueryByDB 执行查询语句,可指定查询的数据库名称

dbidx:执行语句的数据库名称,需要是dbidxs()里面的合法数据库名称 s: 查询语句 rowsCount: 需要返回的行数 params: 参数

func (*Conn) QueryCache

func (d *Conn) QueryCache(cacheTag string, startRow, rowsCount int) *QueryData

QueryCache 查询缓存结果,返回QueryData结构

cacheTag: 缓存标签 startIdx: 起始行数 rowCount: 查询的行数

func (*Conn) QueryCacheJSON deprecated

func (d *Conn) QueryCacheJSON(cacheTag string, startRow, rowsCount int) string

QueryCacheJSON 查询缓存结果,返回json字符串

Deprecated: use QueryCache()

func (*Conn) QueryCacheMultirowPage

func (d *Conn) QueryCacheMultirowPage(cacheTag string, startRow, rowsCount, keyColumeID int) *QueryData

QueryCacheMultirowPage 查询多行分页缓存结果,返回QueryData结构

cacheTag: 缓存标签 startIdx: 起始行数 rowCount: 查询的行数

func (*Conn) QueryCachePB2 deprecated

func (d *Conn) QueryCachePB2(cacheTag string, startRow, rowsCount int) *QueryData

QueryCachePB2 查询缓存结果,返回QueryData结构

Deprecated: use QueryCache()

func (*Conn) QueryFirstPage

func (d *Conn) QueryFirstPage(s string, rowsCount int, params ...interface{}) (*QueryData, error)

QueryFirstPage 执行查询语句,返回第一页数据,不返回总数,用于大数据集的首页查询,可通过缓存继续读取后续数据

s: 查询语句 rowsCount: 需要返回的行数 params: 参数

func (*Conn) QueryFirstPageByDB

func (d *Conn) QueryFirstPageByDB(dbidx int, s string, rowsCount int, params ...interface{}) (*QueryData, error)

QueryFirstPageByDB 执行查询语句,返回第一页数据,不返回总数,用于大数据集的首页查询,可通过缓存继续读取后续数据,可指定查询的数据库名称

dbidx:执行语句的数据库名称,需要是dbidxs()里面的合法数据库名称 s: 查询语句 rowsCount: 需要返回的行数 params: 参数

func (*Conn) QueryJSON deprecated

func (d *Conn) QueryJSON(s string, rowsCount int, params ...interface{}) (string, error)

QueryJSON 执行查询语句,返回结果集的json字符串

Deprecated: use Query()

func (*Conn) QueryLimit

func (d *Conn) QueryLimit(s string, startRow, rowsCount int, params ...interface{}) (*QueryData, error)

QueryLimit 执行查询语句,依据startRow和rowsCount自动追加between或limit关键字,用于快速改造原Query方法的结果集

s: sql语句 startRow: 起始行号,0开始 rowsCount: 返回数据行数,0-返回全部 params: 查询参数,对应查询语句中的`?`占位符

func (*Conn) QueryMultirowPage

func (d *Conn) QueryMultirowPage(dbidx int, s string, rowsCount int, keyColumeID int, params ...interface{}) (query *QueryData, err error)

QueryMultirowPage 执行查询语句,返回QueryData结构,检测多个字段进行换行计数 如: 采用join关联主表和子表进行查询时,主表的字段会重复,因此应该依据主表字段的变化计算有效记录数据

dbidx: 数据库名称 s: sql语句 keyColumeID: 用于分页的关键列id rowsCount: 返回数据行数,0-返回全部 params: 查询参数,对应查询语句中的`?`占位符

func (*Conn) QueryOne deprecated

func (d *Conn) QueryOne(s string, colNum int, params ...interface{}) (js string, err error)

QueryOne 执行查询语句,返回首行结果的json字符串,`{row:[...]}`,该方法不缓存结果

Deprecated: use Query() or QueryFirstPage()

func (*Conn) QueryOnePB2 deprecated

func (d *Conn) QueryOnePB2(s string, colNum int, params ...interface{}) (query *QueryData, err error)

QueryOnePB2 执行查询语句,返回首行结果的QueryData结构,该方法不缓存结果

Deprecated: use Query() or QueryFirstPage()

func (*Conn) QueryPB2 deprecated

func (d *Conn) QueryPB2(s string, rowsCount int, params ...interface{}) (query *QueryData, err error)

QueryPB2 执行查询语句,返回QueryData结构

Deprecated: use Query()

func (*Conn) QueryPB2Chan deprecated

func (d *Conn) QueryPB2Chan(s string, rowsCount int, params ...interface{}) <-chan *QueryDataChan

QueryPB2Chan 查询v2,采用线程+channel优化超大数据集分页的首页返回时间

Deprecated: use Query() or QueryFirstPage() or QueryBig()

func (*Conn) SQLDB

func (d *Conn) SQLDB(dbidx int) (*sql.DB, error)

SQLDB 指定要返回的sql.db实例

dbname: 数据库名称,不设置时返回默认

func (*Conn) SQLDBByName

func (d *Conn) SQLDBByName(dbname string) (*sql.DB, error)

GetDBIdx 连接多个数据库的时候,设置默认的数据库名称

func (*Conn) SetDefaultDB

func (d *Conn) SetDefaultDB(dbidx int) error

SetDefaultDB 连接多个数据库的时候,设置默认的数据库名称

func (*Conn) TablesAreNew

func (d *Conn) TablesAreNew() bool

func (*Conn) UnionView

func (d *Conn) UnionView(dbname, tableName string, maxSubTables, maxTableSize, maxTableRows int) error

type Drive

type Drive string
const (
	DriveMySQL     Drive = "mysql"
	DriveSQLServer Drive = "sqlserver"
	DrivePostgre   Drive = "postgre"
)

type Opt

type Opt struct {
	// 数据驱动
	DriverType Drive
	// 服务地址
	Server string
	// 用户名
	User string
	// 密码
	Passwd string
	// tls 参数
	TLS string
	// 数据库名称
	DBNames []string
	// 数据库初始化脚本,和DBName对应
	InitScripts []string
	// 设置缓存
	QueryCache cache.Cache[*QueryData]
	// 日志
	Logger logger.Logger
	// 执行超时
	Timeout time.Duration
	// contains filtered or unexported fields
}

type QueryData

type QueryData struct {
	Rows     []*QueryDataRow `json:"rows,omitempty"`
	Columns  []string        `json:"columns,omitempty"`
	CacheTag string          `json:"cache_tag,omitempty"`
	Total    int             `json:"total,omitempty"`
}

QueryData 数据集

func (*QueryData) JSON

func (d *QueryData) JSON() (string, error)

type QueryDataChan

type QueryDataChan struct {
	Locker *sync.WaitGroup
	Data   *QueryData
	Total  *int
	Err    error
}

QueryDataChan chan方式返回首页数据

type QueryDataRow

type QueryDataRow struct {
	// Deprecated: will removed in a future version, use VCells
	Cells  []string        `json:"cells,omitempty"`
	VCells []*config.Value `json:"vcells,omitempty"`
}

QueryDataRow 数据行

func (*QueryDataRow) JSON

func (d *QueryDataRow) JSON() string

type SQLInterface

type SQLInterface interface {
	IsReady() bool
	QueryCacheJSON(string, int, int) string
	QueryCachePB2(string, int, int) *QueryData
	Exec(string, ...interface{}) (int64, int64, error)
	ExecPrepare(string, int, ...interface{}) error
}

SQLInterface 数据库接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL