Corporate Training
Request Demo
Click me
Menu
Let's Talk
Request Demo

Tutorials

Golang - Database Connectivity

28. Database Connectivity

Database connectivity is a crucial aspect of web development that allows you to store, retrieve, and manage data. In this tutorial, I'll guide you through connecting to a PostgreSQL database using the popular third-party package "github.com/jackc/pgx" and performing basic CRUD operations.

Installing the "pgx" Package:

You can install the "pgx" package using the following command:

go get -u github.com/jackc/pgx/v4

 

Connecting to the PostgreSQL Database:

To connect to a PostgreSQL database, you'll need to provide the necessary connection details.  

package main

import (
	"context"
	"fmt"
	"github.com/jackc/pgx/v4"
	"log"
)

func main() {
	connConfig, err := pgx.ParseConfig("postgresql://username:password@localhost:5432/mydb")
	if err != nil {
		log.Fatal(err)
	}

	conn, err := pgx.ConnectConfig(context.Background(), connConfig)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

	fmt.Println("Connected to the database")
}

 

In this example, replace 'username',  'password' ,  'localhost',  '5432', and 'mydb'with your actual PostgreSQL database details.

Performing CRUD Operations:

Now let's explore how to perform basic CRUD operations using the connected database.

package main

import (
	"context"
	"fmt"
	"github.com/jackc/pgx/v4"
	"log"
)

type Book struct {
	ID     int
	Title  string
	Author string
}

func main() {
	connConfig, err := pgx.ParseConfig("postgresql://username:password@localhost:5432/mydb")
	if err != nil {
		log.Fatal(err)
	}

	conn, err := pgx.ConnectConfig(context.Background(), connConfig)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

	fmt.Println("Connected to the database")

	// Insert a new book
	_, err = conn.Exec(context.Background(), "INSERT INTO books (title, author) VALUES ($1, $2)", "Go Programming", "John Doe")
	if err != nil {
		log.Fatal(err)
	}

	// Query all books
	rows, err := conn.Query(context.Background(), "SELECT id, title, author FROM books")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	var books []Book
	for rows.Next() {
		var book Book
		err := rows.Scan(&book.ID, &book.Title, &book.Author)
		if err != nil {
			log.Fatal(err)
		}
		books = append(books, book)
	}

	fmt.Println("Books:")
	for _, book := range books {
		fmt.Printf("ID: %d, Title: %s, Author: %s\n", book.ID, book.Title, book.Author)
	}
}

 

In this example, we create a 'Book' struct and demonstrate inserting a new book and querying all books from the database.

Summary:

  • Connecting to a PostgreSQL database in Go involves using the "github.com/jackc/pgx" package.
  • Provide connection details such as username, password, hostname, port, and database name.
  • Use the 'ConnectConfig' function to establish a connection and the 'Exec' and 'Query' functions to perform CRUD operations.
  • Properly handle errors and remember to close the connection when done.

Database connectivity is a crucial aspect of web applications, allowing you to store and retrieve data efficiently. By integrating database operations into your Go application, you can build more dynamic and powerful web services.