golang不使用cgo的sqlite驱动推荐
sqlite
sqlite驱动有很多,但是绝大多数都是cgo写的,也就是纯粹c语言,不支持交叉编译,或者一些并不遵循database/sql标准.
cgo驱动https://github.com/mattn/go-sqlite3
这个应该是最出名的,用的也多,但是不支持交叉编译,windows上需要安装gcc才能编译,非常不方便.
本文推荐的是另一个modernc.org/sqlite
但是他在github上边没有,而是在gitlab上,用起来也不方便,于是乎我就搬到了github
包的地址github.com/logoove/sqlite
,这个库是唯一不使用cgo,支持标准database/sql.
所以在gorm,xrom,以及goframe中都是可以直接使用.而不用改任何代码.
需要说明,官方的在驱动名称使用的是sqlite,但是我在移植过程中改成了sqlite3,这样完全就可以替换掉mattn的sqlite包,他们名称就一致了
在goframe框架中
goframe在国内算是非常好用的一个框架,但是sqlite驱动支持官方推荐的都需要cgo支持,如果使用github.com/logoove/sqlite
不用更改任何代码就能直接使用在orm中,只需要载入
`_ github.com/logoove/sqlite`
即可,这样goframe框架orm就支持sqlite了,不该任何goframe代码.
标准非orm中使用例子
"github.com/jmoiron/sqlx"
_ "github.com/logoove/sqlite"
var db *sqlx.DB
db, _ = sqlx.Open("sqlite3","users.db")
rows:=[]Users{}
db.Select(&rows,"SELECT id,name FROM users ORDER BY id")
sqlx标准方法都支持,交叉编译也很棒,推荐不要再使用mattn的包了.
- 原文作者:Yoby
- 原文链接:/2021/06/15/20210615-sqlite.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),关于内容请通过关于我方式联系作者!