mysql连接 xorm_创建Orm引擎

### 创建Orm引擎

在xorm里面,可以同时存在多个Orm引擎,一个Orm引擎称为Engine,一个Engine一般只对应一个数据库。Engine通过调用`xorm.NewEngine`生成,如:

~~~

import (

_ "github.com/go-sql-driver/mysql"

"github.com/go-xorm/xorm"

)

var engine *xorm.Engine

func main() {

var err error

engine, err = xorm.NewEngine("mysql", "root:123@/test?charset=utf8")

}

~~~

or

~~~

import (

_ "github.com/mattn/go-sqlite3"

"github.com/go-xorm/xorm"

)

var engine *xorm.Engine

func main() {

var err error

engine, err = xorm.NewEngine("sqlite3", "./test.db")

}

~~~

一般情况下如果只操作一个数据库,只需要创建一个`engine`即可。`engine`是GoRutine安全的。

创建完成`engine`之后,并没有立即连接数据库,此时可以通过`engine.Ping()`来进行数据库的连接测试是否可以连接到数据库。另外对于某些数据库有连接超时设置的,可以通过起一个定期Ping的Go程来保持连接鲜活。

对于有大量数据并且需要分区的应用,也可以根据规则来创建多个Engine,比如:

~~~

var err error

for i:=0;i<5;i++ {

engines[i], err = xorm.NewEngine("sqlite3", fmt.Sprintf("./test%d.db", i))

}

~~~

engine可以通过engine.Close来手动关闭,但是一般情况下可以不用关闭,在程序退出时会自动关闭。

NewEngine传入的参数和`sql.Open`传入的参数完全相同,因此,在使用某个驱动前,请查看此驱动中关于传入参数的说明文档。以下为各个驱动的连接符对应的文档链接:

-

[sqlite3](http://godoc.org/github.com/mattn/go-sqlite3#SQLiteDriver.Open)

-

[mysql dsn](https://github.com/go-sql-driver/mysql#dsn-data-source-name)

-

[mymysql](http://godoc.org/github.com/ziutek/mymysql/godrv#Driver.Open)

-

[postgres](http://godoc.org/github.com/lib/pq)

在engine创建完成后可以进行一些设置,如:

1.调试,警告以及错误等显示设置,默认如下均为`false`

- `engine.ShowSQL = true`,则会在控制台打印出生成的SQL语句;

- `engine.ShowDebug = true`,则会在控制台打印调试信息;

- `engine.ShowError = true`,则会在控制台打印错误信息;

- `engine.ShowWarn = true`,则会在控制台打印警告信息;

2.如果希望将信息不仅打印到控制台,而是保存为文件,那么可以通过类似如下的代码实现,`NewSimpleLogger(w io.Writer)`接收一个io.Writer接口来将数据写入到对应的设施中。

~~~

f, err := os.Create("sql.log")

if err != nil {

println(err.Error())

return

}

defer f.Close()

engine.Logger = xorm.NewSimpleLogger(f)

~~~

3.engine内部支持连接池接口和对应的函数。

- 如果需要设置连接池的空闲数大小,可以使用`engine.SetMaxIdleConns()`来实现。

- 如果需要设置最大打开连接数,则可以使用`engine.SetMaxOpenConns()`来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值