Примеры Golang SQLite

Primery Golang Sqlite



Golang — это язык программирования с открытым исходным кодом. Он поддерживает различные типы инструментов базы данных. SQLite — популярный движок реляционной базы данных, и у Golang есть пакет базы данных/SQL, который можно использовать для подключения к базе данных SQLite и выполнения различных типов задач базы данных. Показан способ подключения к базе данных SQLite и выполнения различных типов операций с базой данных, таких как создание таблицы, вставка записей в таблицу, чтение данных из таблицы, обновление данных таблицы и удаление записей из таблицы. в этом руководстве с использованием скрипта Golang.

Предпосылки:

Перед выполнением примеров из этого руководства необходимо выполнить следующие задачи:

A. Установите язык Golang в систему, если он не был установлен ранее. Выполните следующую команду, чтобы проверить установленную версию Golang:







$ идти версия



B. Установите sqlite3 в систему, если он не был установлен ранее. Sqlite3 установлен по умолчанию в Ubuntu 20+. Выполните следующую команду, чтобы проверить установленную версию sqlite3:



$ sqlite3 --версия





C. Выполните следующие команды, чтобы создать папку с именем «golang-sqlite» и перейдите в эту папку, где будут храниться файл базы данных SQLite и файл Golang:

$ mkdir golang-sqlite
$ cd golang-sqlite

D. Выполните следующую команду, чтобы загрузить необходимый пакет Golang для использования SQLite с Golang:



$ перейти на github.com/mattn/go-sqlite3

Операции с базой данных с использованием Golang и SQLite

В этом руководстве показаны основные операции с базой данных с использованием базы данных SQLite и скрипта Golang. Список задач базы данных, которые рассматриваются в этом руководстве, упоминается ниже:

  1. Создайте базу данных SQLite
  2. Установить соединение с базой данных SQLite
  3. Создать новую таблицу
  4. Вставьте данные в таблицу
  5. Прочитайте данные из таблицы
  6. Обновите данные таблицы
  7. Удалить данные из таблицы

Создайте базу данных SQLite с помощью Golang

Создайте файл Golang со следующим скриптом, который создает новый файл базы данных SQLite с именем «test.db». В скрипт импортированы четыре модуля. Модуль «fmt» используется для печати вывода в терминале. Модуль «log» используется для прерывания программы при появлении какой-либо ошибки. Модуль «os» используется для создания базы данных SQLite и обработки ошибки. Модуль «go-sqlite3» используется для подключения к базе данных SQLite через Golang. Метод Create() модуля «os» используется здесь для создания базы данных SQLite. Если база данных создана успешно, в терминале будет напечатано сообщение об успешном завершении. В противном случае программа будет закрыта. Метод Close() вызывается для закрытия соединения с базой данных.

упаковка основной

//Импортируем необходимые модули
Импортировать (
'ФМТ'
'бревно'
'ты'
_ 'github.com/mattn/go-sqlite3'
)

функция основной () {

//Создаем новую базу данных SQLite
дБ , ошибаться '=' ты . Создавать ( 'test.db' )
// Проверяем на наличие ошибок
если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
// Печатаем сообщение об успехе
ФМТ . Распечатать ( «База данных создана». )
}
//Закрываем соединение с БД
дБ . Закрывать ()
}

Запустите следующую команду, чтобы запустить файл «db_connect.go»:

$ запустить db_connect.go

Запустите команду «ls», чтобы проверить, создан ли файл базы данных «test.db»:

$ лс

Следующий вывод показывает, что сообщение об успешном выполнении «База данных создана» печатается в выводе, а файл «test.db» создается в текущем местоположении:

Подключение к базе данных SQLite с помощью Golang

Создайте файл Golang со следующим скриптом, который открывает файл базы данных «test.db» и устанавливает соединение с базой данных. Для выполнения этой задачи сюда импортируется модуль базы данных/SQL Golang. Здесь используется метод open() для установления соединения с существующей базой данных SQLite. Если база данных успешно подключена, в терминале будет напечатано сообщение об успехе. В противном случае программа будет закрыта.

упаковка основной

//Импортируем необходимые модули
Импортировать (
'ФМТ'
'бревно'
'база данных/sql'
_ 'github.com/mattn/go-sqlite3'
)

функция основной () {

//Создаем новую базу данных SQLite
дБ , ошибаться '=' SQL . Открыть ( 'sqlite3' , 'test.db' )
// Проверяем на наличие ошибок
если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
// Печатаем сообщение об успехе
ФМТ . Распечатать ( «База данных успешно подключена». )
}
//Закрываем соединение с БД
дБ . Закрывать ()
}

Выполните следующую команду, чтобы запустить файл «db_connect2.go»:

$ запустить db_connect2.go

Следующий вывод показывает, что файл базы данных «test.db» успешно открыт и подключен. Сообщение об успешном выполнении «База данных успешно подключена» печатается в выводе:

Создайте таблицу в базе данных SQLite с помощью Golang

Создайте файл Golang со следующим скриптом, который создает таблицу базы данных с именем «members» внутри файла базы данных «test.db». Метод Exec() используется здесь для выполнения запроса CREATE TABLE, который создает таблицу «members» с шестью полями и первичным ключом. Если таблица успешно создана в базе данных, печатается сообщение об успешном завершении. В противном случае программа будет закрыта.

упаковка основной

//Импортируем необходимые модули
Импортировать (
'ФМТ'
'бревно'
'база данных/sql'
_ 'github.com/mattn/go-sqlite3'
)

функция основной () {

//Создаем новую базу данных sqlite
дБ , ошибаться '=' SQL . Открыть ( 'sqlite3' , 'test.db' )
// Проверяем на наличие ошибок
если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
константа запрос нить '=' `
СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ членов (
id INTEGER NOT NULL ПЕРВИЧНЫЙ КЛЮЧ,
имя CHAR(40) НЕ NULL,
mtype CHAR(100) НЕ NULL,
электронная почта СИМВОЛ(50),
адрес ТЕКСТ НЕ НУЛЬ,
мобильный CHAR(25) NOT NULL);`

_ , ошибаться '=' дБ . Исполнитель ( запрос );

если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
// Печатаем сообщение об успехе
ФМТ . Распечатать ( 'Таблица создана успешно.' )
}

}
//Закрываем соединение с БД
дБ . Закрывать ()
}

Запустите следующую команду, чтобы запустить файл «create_table.go»:

$ запустить create_table.go

Следующий вывод показывает, что таблица успешно создана в базе данных. Сообщение об успехе «Таблица успешно создана» печатается в терминале:

Вы можете войти в SQLite, чтобы проверить, создана ли таблица в базе данных.

Выполните следующую команду, чтобы запустить SQLite с базой данных «test.db»:

$ sqlite3 test.db

Запустите команду «.tables» SQLite из командной строки SQLite, чтобы проверить имена таблиц базы данных:

sqlite3 > .таблицы

Следующий вывод показывает, что база данных содержит таблицу «members», созданную при выполнении скрипта Golang:

Вставьте записи в таблицу SQLite с помощью Golang

Несколько записей можно вставить в таблицу, выполнив запрос INSERT несколько раз или добавив несколько значений в один запрос INSERT. Создайте файл Golang со следующим сценарием, который вставляет три записи в таблицу «members» файла базы данных «test.db» с помощью одного запроса INSERT. Метод Exec() используется здесь для выполнения запроса INSERT. Если записи успешно вставлены в таблицу, печатается сообщение об успехе. В противном случае программа будет закрыта.

упаковка основной

//Импортируем необходимые модули
Импортировать (
'ФМТ'
'бревно'
'база данных/sql'
_ 'github.com/mattn/go-sqlite3'
)

функция основной () {

//Создаем новую базу данных SQLite
дБ , ошибаться '=' SQL . Открыть ( 'sqlite3' , 'test.db' )
// Проверяем на наличие ошибок
если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
константа запрос нить '=' `
ВСТАВИТЬ В участников (идентификатор, имя, mtype, электронная почта, адрес, мобильный)
ЗНАЧЕНИЯ(1, 'Нехал Ахмед', 'Серебро', 'nehal@gmail.com','36, Дханмонди 2, Дакка','01844657342'),
(2, «Абир Чоудхури», «Золото», «abir@gmail.com», «102, Мирпур 10, Дакка», «01994563423»),
(3, «Мирза Аббас», «Серебро», «abbas@gmail.com», «12, Джигатала, Дакка», «01640006710»);`


//Выполнить запрос
_ , ошибаться '=' дБ . Исполнитель ( запрос );

если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
// Печатаем сообщение об успехе
ФМТ . Распечатать ( 'Записи вставлены успешно.' )
}
}

//Закрываем соединение с БД
дБ . Закрывать ()
}

Запустите следующую команду, чтобы выполнить файл «insert_table.go»:

$ запустите insert_table.go

Следующий вывод показывает, что записи успешно вставлены в таблицу. Сообщение об успехе «Записи успешно вставлены» печатается в выводе:

Вы можете войти в SQLite, чтобы проверить, успешно ли вставлены три записи в таблицу «members».

Выполните следующую команду, чтобы запустить SQLite с базой данных «test.db»:

$ sqlite3 test.db

Запустите следующий запрос SELECT, чтобы прочитать все содержимое таблицы «members»:

sqlite3 > ВЫБРАТЬ * ОТ членов ;

Следующий вывод показывает, что таблица «members» содержит три записи, вставленные скриптом Golang:

Чтение данных таблицы SQLite с помощью Golang

Создайте файл Golang со следующим скриптом, который считывает записи таблицы «members». Вы должны определить переменные в Golang для хранения значений, которые возвращаются из запроса SELECT. В этом сценарии пять полей извлекаются из таблицы «members» с помощью запроса SELECT. Итак, в скрипте определены пять переменных для хранения значений пяти полей таблицы «members», где значением поля «mtype» является «Silver». Метод Query() используется здесь для выполнения запроса SELECT. Затем цикл for используется для чтения результирующего набора, возвращаемого запросом SELECT. Функция printf() используется для печати отформатированных значений результирующего набора.

упаковка основной

//Импортируем необходимые модули
Импортировать (
'ФМТ'
'бревно'
'база данных/sql'
_ 'github.com/mattn/go-sqlite3'
)

функция основной () {

//Создаем новую базу данных SQLite
дБ , ошибаться '=' SQL . Открыть ( 'sqlite3' , 'test.db' )

// Проверяем на наличие ошибок
если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {

//Объявить переменные для хранения значений строки
был идентификатор инт
был имя нить
был mtype нить
был адрес нить
был мобильный нить
константа запрос нить '=' `ВЫБЕРИТЕ идентификатор, имя, mtype, адрес, мобильный
ОТ членов
ГДЕ mtype = 'Серебро';`


//Выполнить запрос
ряды , ошибаться '=' дБ . Запрос ( запрос );

если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {

// Печатаем сообщение об успехе
ФМТ . Распечатать ( «Записи всех серебряных участников:» )
ФМТ . Распечатать ( 'ИДЕНТИФИКАТОР Имя Тип участника Адрес Контактный номер' )
для ряды . Следующий () {
ряды . Сканировать ( &идентификатор , &имя , &mtype , &адрес , &мобильный )
ФМТ . Принтф ( '%d %s %s %s %s \n ' , идентификатор , имя , mtype , адрес , мобильный )
}
}
}
//Закрываем соединение с базой данных
дБ . Закрывать ()
}

Запустите следующую команду, чтобы выполнить файл «select_table.go»:

$ запустить select_table.go

В таблице «members» существуют две записи, которые содержат «Silver» в поле «mtype». Следующий вывод показывает две записи таблицы «members», которые возвращаются запросом SELECT:

Обновите данные таблицы SQLite с помощью Golang

Создайте файл Golang со следующим сценарием, который изменяет значение мобильного поля таблицы «members», которое содержит значение id, равное 2. Здесь используется метод Exec() для выполнения запроса UPDATE. Если запись в таблице успешно обновлена, печатается сообщение об успешном завершении. В противном случае программа будет закрыта.

упаковка основной

//Импортируем необходимые модули
Импортировать (
'ФМТ'
'бревно'
'база данных/sql'
_ 'github.com/mattn/go-sqlite3'
)

функция основной () {

//Создаем новую базу данных SQLite
дБ , ошибаться '=' SQL . Открыть ( 'sqlite3' , 'test.db' )
// Проверяем на наличие ошибок
если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
константа запрос нить '=' `
ОБНОВЛЕНИЕ участников SET mobile = '018563452390' WHERE id = 2;`

_ , ошибаться '=' дБ . Исполнитель ( запрос );

если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
// Печатаем сообщение об успехе
ФМТ . Распечатать ( «Запись успешно обновлена». )
}
}
//Закрываем соединение с базой данных
дБ . Закрывать ()
}

Запустите следующую команду, чтобы запустить файл «update_table.go»:

$ запустить update_table.go

В таблице «members» вторая строка содержит значение id, равное 2. Следующий вывод показывает, что запись таблицы успешно обновлена. Сообщение об успехе «Запись успешно обновлена» печатается в терминале:

Вы можете войти в SQLite, чтобы проверить, обновлена ​​ли какая-либо запись в таблице членов.

Выполните следующую команду, чтобы запустить SQLite с базой данных «test.db»:

$ sqlite3 test.db

Запустите следующий запрос SELECT, чтобы прочитать все содержимое таблицы «members»:

sqlite3 > ВЫБРАТЬ * ОТ членов ;

Значение мобильного поля 2 й запись таблицы участников «01994563423» перед выполнением скрипта. Следующий вывод показывает, что значение мобильного поля 2 й запись таблицы участников меняется на «018563452390» после выполнения скрипта:

Удалить данные таблицы SQLite с помощью Golang

Создайте файл Golang со следующим скриптом, который удаляет 3 рд запись таблицы «members», которая содержит значение id, равное 3. Метод Exec() используется здесь для выполнения запроса DELETE. Если запись успешно удалена из таблицы, печатается сообщение об успешном завершении. В противном случае программа будет закрыта.

упаковка основной

//Импортируем необходимые модули
Импортировать (
'ФМТ'
'бревно'
'база данных/sql'
_ 'github.com/mattn/go-sqlite3'
)

функция основной () {

//Создаем новую базу данных SQLite
дБ , ошибаться '=' SQL . Открыть ( 'sqlite3' , 'test.db' )
// Проверяем на наличие ошибок
если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
//Определяем запрос на удаление
константа запрос нить '=' `УДАЛИТЬ ИЗ участников, ГДЕ id = 3;`
//Выполнить запрос
_ , ошибаться '=' дБ . Исполнитель ( запрос );

если ошибаться '=' ноль {
//Добавляем сообщение об ошибке в лог
бревно . Фатальный ( ошибаться )
} еще {
// Печатаем сообщение об успехе
ФМТ . Распечатать ( «Запись успешно удалена». )
}
}
//Закрываем соединение с БД
дБ . Закрывать ()
}

Запустите следующую команду, чтобы выполнить файл «delete_table.go»:

$ запустить delete_table.go

Следующий вывод показывает, что 3 рд запись таблицы «members» успешно удалена. Сообщение об успехе «Запись успешно удалена» печатается в терминале:

Вы можете войти в SQLite, чтобы проверить, удалена ли какая-либо запись таблицы участников или нет.

Выполните следующую команду, чтобы запустить SQLite с базой данных «test.db»:

$ sqlite3 test.db

Запустите следующий запрос SELECT, чтобы прочитать все содержимое таблицы «members»:

sqlite3 > ВЫБРАТЬ * ОТ членов ;

Следующий вывод показывает, что значение 3 рд запись таблицы участников удаляется после выполнения сценария, а две другие записи печатаются в выводе:

Заключение

И SQLite, и Golang сейчас популярны благодаря своей простоте и небольшим возможностям. С помощью этих инструментов можно легко реализовать любое простое приложение на основе базы данных. Основная часть любого приложения заключается в реализации операции CRUD. В этом руководстве объясняются методы реализации операции CRUD с использованием скрипта Golang и базы данных SQLite с использованием нескольких файлов Golang. Если вы только начинаете изучать язык Go и базу данных SQLite, это руководство поможет вам изучить их с основ.