A replacement for database sql

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

内容简介: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.


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

查看所有标签

猜你喜欢:

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

python学习手册(原书第5版)

python学习手册(原书第5版)

马克·卢茨 / 机械工业出版社 / 2018-10 / 219

如果你想动手编写高效、高质量并且很容易与其他语言和工具集成的代码,本书将快速地帮助你利用Python提高效率。本书基于Python专家的流程培训课程编写,内容通俗易懂。本书包含很多注释的例子和插图,以帮助你开始使用Python2.7和3.3。每章都包含关于Python语言的重要组成部分的一节课。本书主要内容:了解Python的主要内置对象类型,如数字、列表和字典;创建和处理对象的Python语句,......一起来看看 《python学习手册(原书第5版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具