func NewTx() *Transaction {
	return &Transaction{}
}
NewTx returns a newly initialized Transaction that implements Transaction
package mysql
import (
	"database/sql"
)
const (
	driver = "mysql"
)
type Database struct {
	dataSourceName string
	db             *sql.DB
}
func New(dataSourceName string) *Database {
	database := &Database{}
	if dataSourceName != "" {
		database.dataSourceName = dataSourceName
	}
	return database
}
func (database *Database) SetDB(db *sql.DB) {
	database.db = db
}
func (database *Database) GetDB() *sql.DB {
	return database.db
}
func (database *Database) Open() (*Database, error) {
	db, err := sql.Open(driver, database.dataSourceName)
	database.db = db
	return database, err
}
func (database *Database) Ping() error {
	return database.db.Ping()
}
func (database *Database) Close() error {
	return database.db.Close()
}
func (database *Database) Prepare(sql string) (*sql.Stmt, error) {
	stmt, err := database.db.Prepare(sql)
	return stmt, err
}
func (database *Database) Query(sql string, args ...interface{}) (*sql.Rows, error) {
	if args != nil {
		return database.db.Query(sql, args...)
	}
	return database.db.Query(sql)
}
func (database *Database) Fetch(sql string, args ...interface{}) *sql.Row {
	return database.db.QueryRow(sql, args)
}
type Transaction struct {
	Tx *sql.Tx
}