美文网首页
golang database/sql总结

golang database/sql总结

作者: 盈朔 | 来源:发表于2020-08-06 09:44 被阅读0次

    database/sql究竟是个什么?

    答:database/sql应该是golang提供的一种orm。是一个标准库。如果你想要使用某种数据库还需要安装对应数据库golang的驱动包。那么什么又是数据库驱动包?例如你要用mysql数据库,你需要编写一个客户端程序,包括连接mysql服务器,然后他们之间还需要经常的消息交互。那么消息的格式一定要遵守mysql规范的格式。所以mysql公司或社区大牛就根据规范,用不同的语言实现客户端的包,这就是数据库驱动包,但是光有这些驱动包的话,你连接服务器仍然不是特别的方便,如果你想创建多条数据库连接,你点自己去维护,如果你查询表之后,读取行和列之后。都是对应列的编码方式,你自己还点去做解码,然后映射自己需要的数据对象。所以在数据驱动包上面的就是orm。orm会帮你去忽略这些细节。

    database.sql和database.sql.driver之间什么关系?

    答:database.sql就是golang的orm .而database.sql.driver就是golang实现数据库驱动包的通用规范,不同的数据库驱动包会具体的实现database.sql.driver接口。并且在init()函数内调用sql。把自己注册到对应的sql中。

    database.sql中openDB会创建和数据库的连接么?

    答:不会,它只是简单的做了一下传输参数的校验,如果传入参数没有问题,那么它创建一个对应的内部对象。然后就返回了。

    database.sql什么时候才会和数据库创建连接?

    答:当调用ping函数或者query()函数的时候。就是所谓的真的需要连接的时候才会执行连接。其实database.sql底层实现了一个连接池,当需要连接的时候,判断是否有空闲的连接,如果有直接用,没有没有,判断是否超过连接上限,如果有堵塞等待,如果没有那么就去创建一个新的。

    相关文章

      网友评论

          本文标题:golang database/sql总结

          本文链接:https://www.haomeiwen.com/subject/nsfzrktx.html