您的位置:首页 > 数据库 > MySQL

Haskell安装mysql(mac环境)

2015-09-06 18:08 627 查看
mkdir mysql-test

cd mysql-test

cabal sandbox init

到https://www.stackage.org/ 下载对(zui)应(xin)的cabal.config,放在mysql-test文件夹中

以下4个安装要一个个装,不然会出现卡死的情况

cabal install alex

cabal install happy

cabal install c2hs

cabal install haddock

下载pcre
http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.bz2/download
解压之后用sudo 执行./configure ,会在目录中出现pcre.h

安装pcre-light

cabal install --extra-include-dirs=/Users/brant/program/lib/pcre-8.37 pcre-light

为了安装mysql,需要创建一个软链,否则就会出现找不到/libmysqlclient.18.dylib的错误

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

(2015.10.2 更新)
http://mac.pcbeta.com/thread-164373-1-1.html
因为新的Ei Capitan禁止修改内核,所以链接地址由/usr/lib修改至/usr/local/lib

安装mysql

cabal install --extra-prog-path=/usr/local/mysql-5.6.22-osx10.8-x86_64/bin mysql-0.1.1.8

安装mysql-simple

cabal install --extra-prog-path=/usr/local/mysql-5.6.22-osx10.8-x86_64 mysql-simplee-0.2.2.5

执行hs

ghci -no-user-package-db -package-db .cabal-sandbox/x86_64-osx-ghc-7.10.2-packages.conf.d/ test.hs

或者ghci -package-db .cabal-sandbox/x86_64-osx-ghc-7.10.2-packages.conf.d/ test.hs

或者 cabal run/cabal build

{-# LANGUAGE BangPatterns, DeriveDataTypeable, OverloadedStrings #-}

import MySQL
import Database.MySQL.Simple
import Database.MySQL.Simple.QueryResults
import Database.MySQL.Simple.Result
import Control.Monad.Reader
import Database.MySQL.Simple.Types (Binary(..), In(..), Only(..), Query(..))

main :: IO ()
main = do
--  conn <- connect defaultConnectInfo
conn <- connect defaultConnectInfo {connectHost = "127.0.0.1", connectPort = 3306, connectUser = "username", connectPassword = "password", connectDatabase = "report"}
users <- query conn "select name,age from users where age > ?" (Only (20::Int))
_     <- putStrLn $ show $ map name users
return ()

data User = User { name :: String, age :: Int,sex :: String } deriving Show

instance QueryResults User where

convertResults [fa] [va] = User { name = convert fa va, age = 10,sex="unknown"}

convertResults [fa,fb] [va,vb] = User { name = a, age = b , sex = "female" }
where   a = convert fa va
b = convert fb vb
convertResults [fa,fb,fc] [va,vb,vc] = User{name = a, age =b ,sex =c}
where   a = convert fa va
b = convert fb vb
c = convert fc vc

convertResults fs vs  = convertError fs vs 2

selectUserAllInformation :: SqlQuery [User]
selectUserAllInformation = sqlQuery_ "select sex, age,name from users"

selectUserByFemale :: SqlQuery [User]
selectUserByFemale = sqlQuery_ "select name,age from users where sex='female'"
--selectUserByFemale = query c "select name,age from users where age > ?" ('Only' (42:Int))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: