#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 … спасибо за подсказку.