sqltrace: SQL 추적 기능을 제공하는 로우 코드 침입 라이브러리
sqltrace
모든 관계형 데이터베이스(Sqlite3, MySQL, Oracle, SQL Server, PostgreSQL, TiDB 등)에 적합한 SQL 추적 기능과 다양한 관계형 데이터베이스(gorm, xorm, sqlx 등)용 ORM 라이브러리를 제공하는 로우 코드 침입 라이브러리 )
천취안 / sqltrace
모든 관계형 데이터베이스(Sqlite3, MySQL, Oracle, SQL Server, PostgreSQL, TiDB 등)에 적합한 SQL 추적 기능과 다양한 관계형 데이터베이스(gorm, xorm, sqlx 등)용 ORM 라이브러리를 제공하는 로우 코드 침입 라이브러리 )
sqltrace
모든 관계형 데이터베이스(Sqlite3, MySQL, Oracle, SQL Server
PostgreSQL, TiDB 등) 및 다양한 관계형 데이터베이스(gorm, xorm, sqlx 등)를 위한 ORM 라이브러리
😜설치
go get -u github.com/chenquan/sqltrace
👏사용방법
토종의
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
_ "github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
// open database
db, err := sql.Open("sqlite3_trace", "identifier.sqlite")
if err != nil {
panic(err)
}
tracer := otel.
…
😜설치
go get -u github.com/chenquan/sqltrace
👏사용방법
토종의
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
_ "github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
// open database
db, err := sql.Open("sqlite3_trace", "identifier.sqlite")
if err != nil {
panic(err)
}
tracer := otel.GetTracerProvider().Tracer("sqlite3_trace")
ctx, span := tracer.Start(context.Background(),
"test",
trace.WithSpanKind(trace.SpanKindClient),
)
defer span.End()
db.ExecContext(ctx, `CREATE TABLE t
(
age integer,
name TEXT
)`)
db.ExecContext(ctx, "insert into t values (?,?)", 1, "chenquan")
// transaction
tx, 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;")
for rows.Next() {
var age int
var name string
err := rows.Scan(&age, &name)
if err != nil {
fmt.Println(err)
}
fmt.Println(age, name)
}
}
곰
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
db, err := gorm.Open(sqlite.Dialector{
DriverName: "sqlite3_trace",
DSN: "identifier.sqlite",
}, &gorm.Config{})
if err != nil {
panic(err)
}
tracer := otel.GetTracerProvider().Tracer("sqlite3_trace")
ctx, span := tracer.Start(context.Background(),
"test",
trace.WithSpanKind(trace.SpanKindClient),
)
defer span.End()
type T struct {
Age int `db:"age"`
Name string `db:"name"`
}
db = db.WithContext(ctx)
db.Migrator().AutoMigrate(&T{})
db.Create(&T{
Age: 1,
Name: "chenquan",
})
rows, err := db.Raw("select age+1 as age,name from ts;").Rows()
if err != nil {
panic(err)
}
for rows.Next() {
var age int
var name string
err := rows.Scan(&age, &name)
if err != nil {
fmt.Println(err)
}
fmt.Println(age, name)
}
db.Commit()
}
⭐스타
솔루션을 배우거나 시작하기 위해 이 프로젝트를 좋아하거나 사용하고 있다면 별⭐을 주세요. 감사!
Reference
이 문제에 관하여(sqltrace: SQL 추적 기능을 제공하는 로우 코드 침입 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/chenquan/sqltrace-a-low-code-intrusion-library-that-provides-sql-tracing-capabilities-35d6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
go get -u github.com/chenquan/sqltrace
👏사용방법
토종의
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
_ "github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
// open database
db, err := sql.Open("sqlite3_trace", "identifier.sqlite")
if err != nil {
panic(err)
}
tracer := otel.
…
😜설치
go get -u github.com/chenquan/sqltrace
👏사용방법
토종의
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
_ "github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
// open database
db, err := sql.Open("sqlite3_trace", "identifier.sqlite")
if err != nil {
panic(err)
}
tracer := otel.GetTracerProvider().Tracer("sqlite3_trace")
ctx, span := tracer.Start(context.Background(),
"test",
trace.WithSpanKind(trace.SpanKindClient),
)
defer span.End()
db.ExecContext(ctx, `CREATE TABLE t
(
age integer,
name TEXT
)`)
db.ExecContext(ctx, "insert into t values (?,?)", 1, "chenquan")
// transaction
tx, 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;")
for rows.Next() {
var age int
var name string
err := rows.Scan(&age, &name)
if err != nil {
fmt.Println(err)
}
fmt.Println(age, name)
}
}
곰
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
db, err := gorm.Open(sqlite.Dialector{
DriverName: "sqlite3_trace",
DSN: "identifier.sqlite",
}, &gorm.Config{})
if err != nil {
panic(err)
}
tracer := otel.GetTracerProvider().Tracer("sqlite3_trace")
ctx, span := tracer.Start(context.Background(),
"test",
trace.WithSpanKind(trace.SpanKindClient),
)
defer span.End()
type T struct {
Age int `db:"age"`
Name string `db:"name"`
}
db = db.WithContext(ctx)
db.Migrator().AutoMigrate(&T{})
db.Create(&T{
Age: 1,
Name: "chenquan",
})
rows, err := db.Raw("select age+1 as age,name from ts;").Rows()
if err != nil {
panic(err)
}
for rows.Next() {
var age int
var name string
err := rows.Scan(&age, &name)
if err != nil {
fmt.Println(err)
}
fmt.Println(age, name)
}
db.Commit()
}
⭐스타
솔루션을 배우거나 시작하기 위해 이 프로젝트를 좋아하거나 사용하고 있다면 별⭐을 주세요. 감사!
Reference
이 문제에 관하여(sqltrace: SQL 추적 기능을 제공하는 로우 코드 침입 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/chenquan/sqltrace-a-low-code-intrusion-library-that-provides-sql-tracing-capabilities-35d6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
_ "github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
// open database
db, err := sql.Open("sqlite3_trace", "identifier.sqlite")
if err != nil {
panic(err)
}
tracer := otel.
…
go get -u github.com/chenquan/sqltrace
👏사용방법
토종의
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
_ "github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
// open database
db, err := sql.Open("sqlite3_trace", "identifier.sqlite")
if err != nil {
panic(err)
}
tracer := otel.GetTracerProvider().Tracer("sqlite3_trace")
ctx, span := tracer.Start(context.Background(),
"test",
trace.WithSpanKind(trace.SpanKindClient),
)
defer span.End()
db.ExecContext(ctx, `CREATE TABLE t
(
age integer,
name TEXT
)`)
db.ExecContext(ctx, "insert into t values (?,?)", 1, "chenquan")
// transaction
tx, 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;")
for rows.Next() {
var age int
var name string
err := rows.Scan(&age, &name)
if err != nil {
fmt.Println(err)
}
fmt.Println(age, name)
}
}
곰
package main
import (
"context"
"database/sql"
"fmt"
"github.com/chenquan/sqltrace"
"github.com/mattn/go-sqlite3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func main() {
// Create a sqlite3 driver with link tracking
driver := sqltrace.NewDriver(sqltrace.Config{
Name: "sqlite3_trace",
DataSourceName: "sqlite3",
Endpoint: "http://localhost:14268/api/traces",
Sampler: 1,
Batcher: "jaeger",
}, &sqlite3.SQLiteDriver{})
defer sqltrace.StopAgent()
// register new driver
sql.Register("sqlite3_trace", driver)
db, err := gorm.Open(sqlite.Dialector{
DriverName: "sqlite3_trace",
DSN: "identifier.sqlite",
}, &gorm.Config{})
if err != nil {
panic(err)
}
tracer := otel.GetTracerProvider().Tracer("sqlite3_trace")
ctx, span := tracer.Start(context.Background(),
"test",
trace.WithSpanKind(trace.SpanKindClient),
)
defer span.End()
type T struct {
Age int `db:"age"`
Name string `db:"name"`
}
db = db.WithContext(ctx)
db.Migrator().AutoMigrate(&T{})
db.Create(&T{
Age: 1,
Name: "chenquan",
})
rows, err := db.Raw("select age+1 as age,name from ts;").Rows()
if err != nil {
panic(err)
}
for rows.Next() {
var age int
var name string
err := rows.Scan(&age, &name)
if err != nil {
fmt.Println(err)
}
fmt.Println(age, name)
}
db.Commit()
}
⭐스타
솔루션을 배우거나 시작하기 위해 이 프로젝트를 좋아하거나 사용하고 있다면 별⭐을 주세요. 감사!
Reference
이 문제에 관하여(sqltrace: SQL 추적 기능을 제공하는 로우 코드 침입 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/chenquan/sqltrace-a-low-code-intrusion-library-that-provides-sql-tracing-capabilities-35d6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)