Pull to refresh

PG'OCAML = PostgreSQL + OCaml

Reading time3 min
Views888
Cегодня понадобилось обратиться к базе данных PostgreSQL из Objective Caml, наиболее удобным и продвинутым фремворком для работы с PostgreSQL оказался — PG'OCAML. В этом посте хотелось бы показать пару примеров связки Objective Caml и PostgreSQL и насколько это просто.

Установка происодит следующим образом если у вас все происходит как у меня в 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
Tags:
Hubs:
+1
Comments2

Articles