db

package
v1.4.3 Latest Latest
Warning

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

Go to latest
Published: May 11, 2023 License: GPL-3.0 Imports: 18 Imported by: 2

Documentation

Overview

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

Index

Constants

View Source
const (
	// DriverMYSQL mysql
	DriverMYSQL driveType = iota
	// DriverMSSQL mssql
	DriverMSSQL
	// DriverOracle oracle
	DriverOracle
)

Variables

This section is empty.

Functions

This section is empty.

Types

type QueryData

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

QueryData 数据集

type QueryDataChan added in v1.3.3

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

QueryDataChan chan方式返回首页数据

type QueryDataChanWorker added in v1.3.3

type QueryDataChanWorker struct {
	QDC       chan *QueryDataChan
	RowsCount int
	Strsql    string
	Params    []interface{}
	// contains filtered or unexported fields
}

QueryDataChanWorker chan方式数据库访问

type QueryDataRow

type QueryDataRow struct {
	Cells []string `json:"cells,omitempty"`
}

QueryDataRow 数据行

type SQLInterface

type SQLInterface interface {
	New(...string) error
	IsReady() bool
	QueryCacheJSON(string, int, int) string
	QueryCachePB2(string, int, int) *QueryData
	QueryOnePB2(string, int, ...interface{}) (*QueryData, error)
	QueryPB2(string, int, ...interface{}) (*QueryData, error)
	Exec(string, ...interface{}) (int64, int64, error)
	ExecPrepare(string, int, ...interface{}) error
	ExecBatch([]string) error
}

SQLInterface 数据库接口

type SQLPool

type SQLPool struct {
	// 服务地址
	Server string
	// 用户名
	User string
	// 密码
	Passwd string
	// 数据库名称
	DataBase string
	// 数据驱动
	DriverType driveType
	// IO超时(秒)
	Timeout int
	// 最大连接数
	MaxOpenConns int
	// 日志
	Logger logger.Logger
	// 是否启用缓存功能,缓存30分钟有效
	EnableCache bool
	// 缓存路径
	CacheDir string
	// 缓存文件前缀
	CacheHead string
	// contains filtered or unexported fields
}

SQLPool 数据库连接池

func (*SQLPool) Exec

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

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

s: sql语句

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

func (*SQLPool) ExecBatch

func (p *SQLPool) ExecBatch(s []string) (err error)

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

s: sql语句

paramNum: 占位符数量,为0时自动计算sql语句中`?`的数量

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

func (*SQLPool) ExecPrepare

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

ExecPrepare 批量执行占位符语句 返回 err,使用官方的语句参数分离写法,用于批量执行相同语句

s: sql语句

paramNum: 占位符数量,为0时自动计算sql语句中`?`的数量

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

func (*SQLPool) ExecPrepareV2 added in v1.3.3

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

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

s: sql语句

paramNum: 占位符数量,为0时自动计算sql语句中`?`的数量

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

func (*SQLPool) ExecV2 added in v1.3.3

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

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

s: sql语句

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

func (*SQLPool) IsReady

func (p *SQLPool) IsReady() bool

IsReady 检查状态

func (*SQLPool) MergeTable

func (p *SQLPool) MergeTable(tableName string, maxSubTables int) error

MergeTable 进行分表操作

func (*SQLPool) New

func (p *SQLPool) New(tls ...string) error

New 初始化 tls: 是否启用tls链接。支持以下参数:true,false,skip-verify,preferred

func (*SQLPool) QueryCacheJSON

func (p *SQLPool) QueryCacheJSON(cacheTag string, startRow, rowsCount int) string

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

cacheTag: 缓存标签

startIdx: 起始行数

rowCount: 查询的行数

func (*SQLPool) QueryCacheMultirowPage

func (p *SQLPool) QueryCacheMultirowPage(cacheTag string, startRow, rowsCount, keyColumeID int) *QueryData

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

cacheTag: 缓存标签

startIdx: 起始行数

rowCount: 查询的行数

func (*SQLPool) QueryCachePB2

func (p *SQLPool) QueryCachePB2(cacheTag string, startRow, rowsCount int) *QueryData

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

cacheTag: 缓存标签

startIdx: 起始行数

rowCount: 查询的行数

func (*SQLPool) QueryJSON

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

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

s: sql语句

rowsCount: 返回数据行数,0-返回全部

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

func (*SQLPool) QueryLimit

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

QueryLimit 执行查询语句,限制返回行数

s: sql语句

startRow: 起始行号,0开始

rowsCount: 返回数据行数,0-返回全部

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

func (*SQLPool) QueryMultirowPage

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

QueryMultirowPage 执行查询语句,返回QueryData结构,检测多个字段进行换行计数

s: sql语句

keyColumeID: 用于分页的关键列id

rowsCount: 返回数据行数,0-返回全部

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

func (*SQLPool) QueryOne

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

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

s: sql语句

colNum: 列数量

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

func (*SQLPool) QueryOnePB2 added in v1.3.3

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

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

s: sql语句

colNum: 列数量

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

func (*SQLPool) QueryPB2

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

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

s: sql语句

rowsCount: 返回数据行数,0-返回全部

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

func (*SQLPool) QueryPB2Big

func (p *SQLPool) QueryPB2Big(s string, startRow, rowsCount int, params ...interface{}) (*QueryData, error)

QueryPB2Big 可尝试用于大数据集的首页查询,一定程度加快速度,原查询时间在2s内的没必要使用该方法

s: sql语句

startRow: 起始行号,0开始

rowsCount: 返回数据行数,0-返回全部

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

func (*SQLPool) QueryPB2Chan added in v1.3.3

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

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

s: sql语句

rowsCount: 返回数据行数,0-返回全部

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

func (*SQLPool) ShowTableInfo

func (p *SQLPool) ShowTableInfo(tableName string) (string, string, int64, int64, error)

ShowTableInfo 查询表信息 返回最新子表的 名称,引擎名称,大小(MB),行数

Jump to

Keyboard shortcuts

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