Skip to content

Repository files navigation

sqlbreaker

GodocGo Report CardReleasecodecovDownloadGitHub

A low-code intrusion library that provides SQL breaker capabilities, suitable for any relational database (Sqlite3, MySQL, Oracle, SQL Server, PostgreSQL, TiDB, TDengine, etc.) and ORM libraries for various relational database (gorm, xorm, sqlx, etc.)

Unstable, use with caution in production environment

😜installation

go get -u github.com/chenquan/sqlbreaker

👏how to use

package main
import (
"context""database/sql""fmt""github.com/chenquan/sqlbreaker""github.com/chenquan/sqlbreaker/pkg/breaker""github.com/chenquan/sqlplus""github.com/chenquan/sqltrace""github.com/mattn/go-sqlite3""go.opentelemetry.io/otel""go.opentelemetry.io/otel/trace"
)
funcmain() {
// Create a sqlite3 driver with tracing and breakerhook:=sqlplus.NewMultiHook(
sqltrace.NewTraceHook(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}),
sqlbreaker.NewBreakerHook(breaker.NewBreaker()),
)
// register new driversql.Register("sqlite3_trace", sqlplus.New(&sqlite3.SQLiteDriver{}, hook))
defersqltrace.StopAgent()
// open databasedb, err:=sql.Open("sqlite3_trace", "identifier.sqlite")
iferr!=nil {
panic(err)
}
tracer:=otel.GetTracerProvider().Tracer("sqlite3_trace")
ctx, span:=tracer.Start(context.Background(),
"test",
trace.WithSpanKind(trace.SpanKindClient),
)
deferspan.End()
db.ExecContext(ctx, `CREATE TABLE IF NOT EXISTS t( age integer, name TEXT)`)
db.ExecContext(ctx, "insert into t values (?,?)", 1, "chenquan")
// transactiontx, err:=db.BeginTx(ctx, nil)
stmt, err:=tx.PrepareContext(ctx, "select age+1 as age,name from t where age = ?;")
stmt.QueryContext(ctx, 1)
tx.Commit()
rows, err:=db.QueryContext(ctx, "select age+1 as age,name from t;")
forrows.Next() {
varageintvarnamestringerr:=rows.Scan(&age, &name)
iferr!=nil {
fmt.Println(err)
}
fmt.Println(age, name)
}
}

⭐star

If you like or are using this project to learn or start your solution, please give it a star⭐. Thanks!

👐ecosystem

  • sqltrace:A low-code intrusion library that provides SQL tracing capabilities, suitable for any relational database (Sqlite3, MySQL, Oracle, SQL Server, PostgreSQL, TiDB, TDengine, etc.) and ORM libraries for various relational database (gorm, xorm, sqlx, etc.)
  • sqlplus: A sql enhancement tool library based on database/sql/driver

About

A low-code intrusion library that provides SQL breaker capabilities, suitable for any relational database (Sqlite3, MySQL, Oracle, SQL Server, PostgreSQL, TiDB, TDengine, etc.) and ORM libraries for various relational database (gorm, xorm, sqlx, ent, etc.)

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages