PostgreSQL Support in Go: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
Line 20: Line 20:
db, err := sql.Open("postgres", url)
db, err := sql.Open("postgres", url)
if err != nil {
if err != nil {
   // ...
   ...
}
}
defer func() {
defer func() {
   if err := db.Close(); err != nil {
   if err := db.Close(); err != nil {
     // ...
     ...
   }
   }
}()
}()
Line 30: Line 30:
err = db.Ping()
err = db.Ping()
if err != nil {
if err != nil {
   // ...
   ...
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 37: Line 37:


=Create a Table=
=Create a Table=
<syntaxhighlight lang='go'>
sql := `CREATE TABLE IF NOT EXISTS TEST ("ID" int, "NAME" varchar(10))`
_, err = db.Exec(sql)
if err != nil {
...
}
</syntaxhighlight>
=Delete a Table=
=Delete a Table=
=Insert a Row=
=Insert a Row=

Revision as of 03:50, 14 October 2023

Internal

Open a Connection

import (
  "database/sql"
  _ "github.com/lib/pq"
)

...

role := "ovidiu"
password := "something"
databaseHost := "localhost"
databaseName := "testdb"
url := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable", role, password, databaseHost, databaseName)
db, err := sql.Open("postgres", url)
if err != nil {
  ...
}
defer func() {
  if err := db.Close(); err != nil {
    ...
  }
}()

err = db.Ping()
if err != nil {
  ...
}

sql.Open() returns a database handle. The implementation maintains a pool of zero or more underlying connections, and it is safe for concurrent use by multiple goroutines.

Create a Table

sql := `CREATE TABLE IF NOT EXISTS TEST ("ID" int, "NAME" varchar(10))`
_, err = db.Exec(sql)
if err != nil {
 ...
}

Delete a Table

Insert a Row

Update a Row

Delete a Row

Query