Cегодня понадобилось обратиться к базе данных PostgreSQL из Objective Caml, наиболее удобным и продвинутым фремворком для работы с PostgreSQL оказался — PG'OCAML. В этом посте хотелось бы показать пару примеров связки Objective Caml и PostgreSQL и насколько это просто.
Установка происодит следующим образом если у вас все происходит как у меня в Debian, то PG'OCAML есть в репозиториях и надо лишь выполнить в консоли:
aptitude install libpgocaml-ocaml-dev
Установка на данном этапе завершена, если у вас какой-либо другой дистрибутив, скачайте пакет для вашего дистрибутива, либо всегда есть возможность собрать из исходников.
Перейдем непосредственно к простому примеру:
Здесь у нас происходит создание таблицы users с 3 полями id,name,age в функциональном выражении CREATE_TABLE, затем 2 функциональных выражения insert_user и get_users обработчики SQL запросов, добавление нового пользователя, и соответственно выборка значений из таблицы user. print_user — вывод значений id, name, age. Затем идет непосредственно соединение с нашей базой, PGOCaml.connect (), параметры соедеинения имя пароль… беруться из переменных окружения функционального выражения CREATE_TABLE. И в заключении происходит работа непосредственно с базой данны, добавление пользователей insert_user dbh «John» 30l;, и вывод в список пользовательей List.iter print_user (get_users dbh).
p.s. Официальный сайт: pgocaml
Установка происодит следующим образом если у вас все происходит как у меня в Debian, то PG'OCAML есть в репозиториях и надо лишь выполнить в консоли:
aptitude install libpgocaml-ocaml-dev
Установка на данном этапе завершена, если у вас какой-либо другой дистрибутив, скачайте пакет для вашего дистрибутива, либо всегда есть возможность собрать из исходников.
Перейдем непосредственно к простому примеру:
let CREATE_TABLE dbh =
PGSQL(dbh) "host=MY_HOST" "user=USER"
"password = MY_PASSWORD"
"create temporary table users
(
id serial not null primary key,
name text not null,
age int not null
)"
let insert_user dbh name age =
PGSQL(dbh) "INSERT INTO users (name, age)
VALUES ($name, $age)"
let get_users dbh =
PGSQL(dbh) "SELECT * FROM users"
let print_user (id, name, age) =
Printf.printf "Id: %ld Name: %s Age: %ld \n" id name age
let _ =
let dbh = PGOCaml.connect () in
let () = CREATE_TABLE dbh in
let () =
insert_user dbh "John" 30l;
insert_user dbh "Mary" 40l;
insert_user dbh "Mark" 42l in
List.iter print_user (get_users dbh)
Здесь у нас происходит создание таблицы users с 3 полями id,name,age в функциональном выражении CREATE_TABLE, затем 2 функциональных выражения insert_user и get_users обработчики SQL запросов, добавление нового пользователя, и соответственно выборка значений из таблицы user. print_user — вывод значений id, name, age. Затем идет непосредственно соединение с нашей базой, PGOCaml.connect (), параметры соедеинения имя пароль… беруться из переменных окружения функционального выражения CREATE_TABLE. И в заключении происходит работа непосредственно с базой данны, добавление пользователей insert_user dbh «John» 30l;, и вывод в список пользовательей List.iter print_user (get_users dbh).
p.s. Официальный сайт: pgocaml