A replacement for database sql

栏目: IT技术 · 发布时间: 6年前

内容简介:Imagine if you had the power to rewrite the notoriousWhat would it look like?It would look like the all-new

A replacement for database/sql

Imagine if you had the power to rewrite the notorious database/sql package so that it was friendlier, simpler and less verbose.

What would it look like?

It would look like the all-new dbq package . Version 2.2 was just released with so many bells and whistles that you’ll never directly use the database/sql package again.

A small subset of the features are showcased below. Also read to the end to see the new direction of the package.

Zero boilerplate code

You can execute simple queries in 8 lines instead of 30. And it comes with built-in unmarshaling.

A replacement for database sql

dbq vs database/sql

The contrast speaks for itself.

Flatten Query Args

You have a []string with a list of query arguments that you want to inject into a query without SQL-injection issues. You can feel the irritation building up.

func (db *DB) Query(query string, args ...interface{})

Unfortunately, args only accepts interface{} so you need to superfluously iterate over the entire []string to copy the values into a []interface{} . It makes your code look like Wuhan 2 months back. dbq has your back.

All slices are flattened automatically . No questions asked.

A replacement for database sql
No questions asked!

Mission-critical queries

What if you have a query that HAS TO SUCCEED . Failure is not an option®.

dbq has built-in retry capabilities so it will continue to attempt your query with exponentially increasing intervals.

Transaction management

What about transactions? Got you covered.

dbq.Tx(ctx, db, func(tx interface{}, ..., txCommit dbq.TxCommit) {   res, err := E(ctx, "exec statement")
   if err != nil {
      return // Automatic rollback
   }
   txCommit()})

You can have an arbitrarily complex database operation happening within a transaction without having to worry about rolling-back ON every SINGLE sad PATH. Just commit at the end.

Finally, THIS IS YOUR PACKAGE

The x subpackage houses custom query helper functions that are general xor MySQL/PostgreSQL specific.

You are welcome to submit PR’s with whatever custom functions you want. As long as you leave the core package pristine, and your code compiles and is well documented, then it’ll be welcomed with open arms.

As a warm-up, I’ve included a BulkUpdate function which allows you to update thousands of rows with 1 query without a transaction!

Stay safe boys and girls.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

平台战略

平台战略

陈威如、余卓轩 / 中信出版社 / 2013-1 / 58.00元

《平台战略:正在席卷全球的商业模式革命》内容简介:平台商业模式的精髓,在于打造一个完善的、成长潜能强大的“生态圈”。它拥有独树一帜的精密规范和机制系统,能有效激励多方群体之间互动,达成平台企业的愿景。纵观全球许多重新定义产业架构的企业,我们往往就会发现它们成功的关键——建立起良好的“平台生态圈”,连接两个以上群体,弯曲、打碎了既有的产业链。 平台生态圈里的一方群体,一旦因为需求增加而壮大,另......一起来看看 《平台战略》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具