Как мне использовать postgresqlConnect в базе данных.Модуль HaskellDB.HDBC.PostgreSQL?

#postgresql #haskell #hdbc #haskelldb

#postgresql #haskell #hdbc #haskelldb

Вопрос:

Я не совсем уверен, как использовать postgresqlConnect функцию в модуле Database.HaskellDB.HDBC.PostgreSQL для подключения к базе данных PostgreSQL. На странице документации Haddock указана только подпись типа:

 postgresqlConnect :: MonadIO m => [(String, String)] -> (Database -> m a) -> m a
  

Что a должно быть?

Как мне подключиться к серверу PostgreSQL с postgresqlConnect помощью ?

Ответ №1:

Это то, что я предполагаю: Первый параметр — это список опций, если у вас нет конкретных опций, просто передайте [] . Следующий параметр — это код, который вы на самом деле хотите запустить с базой данных. Вы получаете Database аргумент и можете делать с ним любые монадические вещи. postgresqlConnect Функция оценивает это монадическое действие, отключает базу данных и возвращает ее результат — m a . В большинстве случаев вы, вероятно, захотите использовать IO a .

Комментарии:

1. Поэтому всякий раз, когда я хочу запросить информацию из базы данных, мне, по сути, нужно подключаться и отключаться? Это кажется неэффективным.

2. @Daniel Идея заключается в том, что вы выполняете ввод-вывод, для которого требуется доступ к базе данных внутри одного блока аргументов, чтобы вы могли отправлять более одного запроса. Этот стиль необходим, потому что в противном случае вы можете забыть закрыть соединения.

3. Список поддерживаемых опций находится здесь .

4. @hammar Я никогда раньше не работал с postgresql … спасибо за подсказку.