Haskell DB 有推荐吗 [关闭]

database

1个回答

写回答

EvilWX

2025-07-10 01:03

+ 关注

Database
Database

当谈到Haskell中的数据库操作时,有几个不错的选择可以考虑。其中一个流行的选择是Persistent库,它是一个用于数据库持久化的框架,支持多种后端数据库。Persistent提供了一个类型安全的方式来定义数据模型,并且可以轻松地与不同的数据库进行交互。让我们来看一下如何在Haskell中使用Persistent库来进行数据库操作。

使用Persistent库进行数据库操作

首先,您需要在项目中添加persistent和您选择的数据库后端的相关库。假设我们选择SQLite作为后端,我们需要添加persistent-sqlite库。

haskell

{-# LANGUAGE DeriveAnyClass #-}

{-# LANGUAGE DeriveGeneric #-}

{-# LANGUAGE OverloadedStrings #-}

{-# LANGUAGE QuasiQuotes #-}

{-# LANGUAGE TemplateHaskell #-}

{-# LANGUAGE TypeFamilies #-}

import Database.Persist

import Database.Persist.Sqlite

import Database.Persist.TH

import Control.Monad.IO.Class (liftIO)

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|

Person

name String

age Int

deriving Show

|]

mAIn :: IO ()

mAIn = runSqlite ":memory:" $ do

runMigration migrateAll

let person = Person "Alice" 30

personId <- insert person</p> liftIO $ putStrLn $ "Inserted person with id: " ++ show personId

maybePerson <- get personId</p> liftIO $ print maybePerson

以上是一个简单的示例,展示了如何定义一个Person数据模型,并在SQLite数据库中进行插入操作。首先,使用mkPersist和mkMigrate模板 Haskell 代码创建了一个Person数据模型,它包含了name和age字段。在mAIn函数中,使用runSqlite函数创建了一个内存中的SQLite数据库,并运行了数据库迁移。然后,创建了一个名为person的Person对象,并将其插入数据库中。最后,使用get函数从数据库中获取刚插入的Person对象,并打印出来。

这只是一个简单的示例,Persistent库提供了更多功能,例如查询构建器和复杂的关联。您可以根据自己的需求进一步探索和扩展这个示例。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号