judb

package module
v1.2.3 Latest Latest
Warning

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

Go to latest
Published: Dec 28, 2025 License: Apache-2.0 Imports: 17 Imported by: 0

README

judb

数据库用法的简单包装

支持的数据库类型

  • SQLite
  • MySQL
  • PostgreSQL

Documentation

Index

Constants

View Source
const (
	LogDbTypeFile    = "file"
	LogDbTypeMysql   = "mysql"
	LogDbTypeSqlite  = "sqlite"
	LogDbTypePostgre = "postgre"
)
View Source
const (
	DatabaseTypeMysql    = "mysql"
	DatabaseTypeSqlite   = "sqlite"
	DatabaseTypePostgres = "postgres"
)

Variables

This section is empty.

Functions

func ClearLog

func ClearLog(tab string)

ClearLog 清空指定日志数据库中的所有记录

func DeleteLog

func DeleteLog(tab string, idStart, idStop int64)

DeleteLog 删除默认的日志记录,idStart 到 idStop 的log都会被删除,包含这两个 id,要删除一个id 设置 idStart = id = idStop

func LogToBlack

func LogToBlack(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToBlackF

func LogToBlackF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToBlue

func LogToBlue(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToBlueF

func LogToBlueF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToCyan

func LogToCyan(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToCyanF

func LogToCyanF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToGreen

func LogToGreen(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToGreenF

func LogToGreenF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToMagenta

func LogToMagenta(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToMagentaF

func LogToMagentaF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToRed

func LogToRed(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToRedF

func LogToRedF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToWhite

func LogToWhite(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToWhiteF

func LogToWhiteF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToYellow

func LogToYellow(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToYellowF

func LogToYellowF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func MakeMysqlConfig

func MakeMysqlConfig(host, port, dbname, user, pass string) *mysql.Config

MakeMysqlConfig 这个函数是为了简化 Config 的构造

func MakeMysqlSSLConfig

func MakeMysqlSSLConfig(host, port, dbname, user, pass, tlsName, clientKeyPath, clientCertPath, caCertPath string) *mysql.Config

MakeMysqlSSLConfig 如果 TLS 注册失败,函数会返回 nil,这个函数是为了简化 Config 的构造 tlsName 如果是多连接需要不同名称,否则会产生冲突,单联接时可以传入空串,相当于使用默认名称 "judb-tls-config"

func MakeTLSConfig

func MakeTLSConfig(clientKeyPath, clientCertPath, caCertPath, serverName string) (cfg *tls.Config)

MakeTLSConfig Mysql 使用证书的方式和 PostgreSQL 不太一样,需要单独注册 另外,如果有多个连接,需要注册不同的名字:"judb-tls-config1","judb-tls-config2"

func SetErrorSkip

func SetErrorSkip(skip int)

SetErrorSkip 设置错误信息输出的栈层次,默认是 1,在调用者位置,0 在库的位置

func SetLogDb

func SetLogDb(dbType string, db *sql.DB, save bool)

SetLogDb 设置 Log 保存到数据库的方式

dbType string: 数据库类型, 目前支持 sqlite, mysql 和 postgresql 3 个值

db *DB: 数据库, 支持 MySql 和 SQLite3, 如果这个值是 nil, 则相当于取消日志系统绑定的数据库

save bool: 是否保存到数据库, 即使设置了日志系统绑定的数据库, 仍然可以设置不保存到数据库, 只打印到输出窗口 noinspection GoUnusedExportedFunction

func SetLogLimit

func SetLogLimit(name string, limit int64)

SetLogLimit 设置日志表的最多条数, 防止日志无限增长, 但是旧的日志会被覆盖. 对于文件日志类型, 这个函数是无效的.

name string: 需要设置的日志名称, 空串对应的是默认日志.

limit int64: 设置日志的最大条数, 此值为 0 或负数, 则取消最大条数.

func SetLogPath

func SetLogPath(path string, save bool)

Types

type Db

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

func (*Db) Begin

func (db *Db) Begin() (*sql.Tx, SqlResult)

func (*Db) Close

func (db *Db) Close()

func (*Db) Exec

func (db *Db) Exec(sqlCase string, v ...interface{}) SqlResult

func (*Db) GetDb

func (db *Db) GetDb() *sql.DB

func (*Db) OpenMysql

func (db *Db) OpenMysql(cfg *mysql.Config) bool

func (*Db) OpenPostgres

func (db *Db) OpenPostgres(cfg *postgres.Config) bool

func (*Db) OpenSqlite3

func (db *Db) OpenSqlite3(dbpath, params string) bool

OpenSqlite3 支持多线程写入, 这会稍微降低性能, 但是大多数场景很难避免多线程写入, 如果不启用这个特性, 写入时候有概率触发表被锁定提示.

dbpath: example ./data/log.db

params: 如果不需要修改参数,可以设置为空串,此时它的值是 _mutex=full&_journal_mode=WAL

func (*Db) OutputConnectInfo

func (db *Db) OutputConnectInfo() bool

func (*Db) Query

func (db *Db) Query(sqlCase string, qc QueryCall, v ...interface{}) SqlResult

Query 查询需要返回数据的语句,数据从回调函数的 rows 里获取,无需执行 rows 的 Close 函数, 这个设计的目的是减少遗忘 Close 的可能,因为遗忘 Close 不会对程序有立即的影响,直到 Mysql 资源被耗尽,对于海量的查询语句来说,定位哪里忘记 Close 是非常困难的。 noinspection GoUnusedExportedFunction

func (*Db) QueryRow

func (db *Db) QueryRow(sqlCase string, v ...interface{}) *sql.Row

type LogInfo

type LogInfo struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*LogInfo) Get

func (li *LogInfo) Get(name string) int64

func (*LogInfo) Load

func (li *LogInfo) Load()

func (*LogInfo) Set

func (li *LogInfo) Set(name string, count int64)

type QueryCall

type QueryCall func(rows *sql.Rows)

type QueryFunc

type QueryFunc func(string, QueryCall, ...interface{}) SqlResult

type SQLiteMemDb

type SQLiteMemDb struct {
	Db *sql.DB
}

SQLiteMemDb SQLite 内存数据库, 它的函数并不支持并发, 但并不是说不能多线程调用, 而是不能频繁调用 普通的确认没有线程竞争的情况下是可以多线程调用的. 内存模式的数据库, 无论设置什么参数, 都不支持多线程 同时写

func (*SQLiteMemDb) Close

func (mdb *SQLiteMemDb) Close()

func (*SQLiteMemDb) LoadFromFile

func (mdb *SQLiteMemDb) LoadFromFile(fileDB string) bool

LoadFromFile 加载数据库内容到内存数据库

func (*SQLiteMemDb) Open

func (mdb *SQLiteMemDb) Open() bool

func (*SQLiteMemDb) SaveToFile

func (mdb *SQLiteMemDb) SaveToFile(fileDB string) bool

SaveToFile 这会把内存数据保存到指定的文件, 如果文件存在, 会被覆盖

type SqlResult

type SqlResult struct {
	Result sql.Result
	Code   string
	Error  string
}

func NewSqlResult

func NewSqlResult(err error) (rst SqlResult)

func (*SqlResult) Fail

func (mr *SqlResult) Fail() bool

func (*SqlResult) SetError

func (mr *SqlResult) SetError(err error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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