Masterminds/squirrel: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 47: Line 47:
The format of the [[SQL#Parameterized_SQL_Statements|parameterized statements]] depends on the database. For example, in PostgreSQL, the placeholders are introduced by <code>$</code> and have numerical values, etc.
The format of the [[SQL#Parameterized_SQL_Statements|parameterized statements]] depends on the database. For example, in PostgreSQL, the placeholders are introduced by <code>$</code> and have numerical values, etc.
===PostgreSQL Parameterized Statements===
===PostgreSQL Parameterized Statements===
The parameterized statement placeholders in Squirrel are <code>?</code>. To configure it to generate correct PostgreSQL parameterized statements, we must configure the specific [[PostgreSQL_Concepts#Placeholder_Format|PostgreSQL placeholder format]], which is <code>$<number></code>.
<syntaxhighlight lang='go'>
</syntaxhighlight>
Also see: {{Internal|PostgreSQL_Concepts#Parameterized_SQL_Statements|Parameterized PostgreSQL SQL Statements}}
Also see: {{Internal|PostgreSQL_Concepts#Parameterized_SQL_Statements|Parameterized PostgreSQL SQL Statements}}

Revision as of 18:29, 31 May 2024

External

Internal

Overview

Squirrel is a fluent SQL generator for Go. It helps build SQL queries from composable parts representing the SQL SELECT query clauses: SELECT, FROM, JOIN, WHERE, etc. and also other DML statements.

Installation

go get github.com/Masterminds/squirrel

Programming Model

Queries

import sq "github.com/Masterminds/squirrel"

// Get a database/sql database handle
dbHandle = getDbHandle()

// Build the query with a fluent API
query = sq.Select("*").From("person")

// execute the query with the database handle; the syntax is identical to that used with dbHandle.Query()
rows, err := query.RunWith(dbHandle).Query()
if err != nil { ... }
defer func() {
	if err = rows.Close(); err != nil { ... }
}()
for rows.Next() {
	var (
		id   int
		name string
		city sql.NullString
	)
	if err = rows.Scan(&id, &name, &city); err != nil { ... }
	fmt.Printf("id: %d, name: %s, city: %s\n", id, name, city.String)
}

getDbHandle() can be implemented as shown in:

Connect to a PostgreSQL Database with database/sql API and a pgx Driver

Parameterized Statements

The format of the parameterized statements depends on the database. For example, in PostgreSQL, the placeholders are introduced by $ and have numerical values, etc.

PostgreSQL Parameterized Statements

The parameterized statement placeholders in Squirrel are ?. To configure it to generate correct PostgreSQL parameterized statements, we must configure the specific PostgreSQL placeholder format, which is $<number>.

Also see:

Parameterized PostgreSQL SQL Statements