Golang访问SQL like数据库(一)——思想、driver需实现接口

Golang官方没有提供数据库驱动,只是为开发数据库驱动定义了一些标准接口,开发者可以根据官方定义的标准接口来开发相应的数据库驱动。这样做的好处是:只要是按照标准接口开发的代码,需要迁移数据库时不需要任何的修改。 Golang通过package database/sql定义了这一系列的针对SQL(或SQL-like)数据库的通用接口。sql package必须与一个database driver结合使用。SQL database drivers列表可以参考SQL Drivers

sql和sql/driver的设计目标

sql package主要由两部分组成,database/sql和database/sql/driver。sql和sql/driver的设计目标是

  • 为SQL或SQL-Like的数据库提供的通用数据库API。当前已经有的Go libraries包括SQLite,MYSQL和Postgres等,但是所有的都具有非常不同的感觉,而且感觉不太像Go的风格。
  • 感觉像Go
  • 更多的考虑常见的情况。通常情况下SQL应当可移植。SQL的边界情况或者特定数据库的扩展可以被应用检查到,并有条件的使用。不应该将非常特殊的一些数据库扩展或奇怪的使用方法放入作为目的。
  • 将database driver的基本实现(sql/driver interfaces的实现)与所有用户层类型和方法的实现分离。

    简而言之,就是:
    User Code —> sql package (具体类型) —> sql/driver (接口) —> Database Driver —> sql(注册的数据库) + sql/driver(implement interface)

  • 让类型转换(casting/conversions)在所有驱动间一致。为了达到这个目的,大部分的转换在sql package中完成,而不是在各个driver中,drivers只处理一小部分的数据类型。
  • 灵活的类型转换,但是需要承受silent的截断和其他精度损失。
  • 很好的处理并发。用
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值