有许多Haskell SQLite绑定,这对我来说意味着使用构建/使用SQLite绑定有许多不同的权衡。我试图阅读其中许多软件包的文档,但过了一段时间它变得模糊不清,我无法真正确定选择其中一个的主要权衡。
搜索Hackage发现:
没关系一些“meta”SQLite包。 haskelldb-hdbc-sqlite3,haskelldb-hsql-sqlite3,language-sqlite,opaleye-sqlite
希望有人能够成功地做到这一点并且可以帮助我理解如何选择。
答案 0 :(得分:3)
我对...-简单的图书馆家庭有很好的经验。它们功能非常全面,并且处于一个很好的中等抽象层次,您可以在很大程度上灵活地处理与数据库交互的方式。
我是opaleye-sqlite的作者。这是一个有点实验性的Opaleye for SQLite版本。 Postgres版本的Opaleye非常扎实,并且在几个地方用于生产,但我只知道一个人在生产中使用了opaleye-sqlite。
答案 1 :(得分:1)
我看着提到的包裹。其中一些程序包是另一个程序包的依赖项(例如opaleye-sqlite和sqlite-simple),它们依赖于直接SQLite。
因此,首先让我们看一下提供实际驱动程序的软件包。他们大多数已经过时了。似乎还有3个具有最新更新:
https://hackage.haskell.org/package/simplest-sqlite https://github.com/YoshikuniJujo/test_haskell/tree/master/features/ffi/sqlite3/simplest-sqlite我不会使用它,因为存储库显示“这只是我的私人Haskell学习/测试存储库。”
https://hackage.haskell.org/package/persistent-sqlite,这是基于Direct-sqlite的(似乎部分Direct-sqlite已被分叉)
最后一个是direct-sqlite软件包。我使用this website来查找哪个程序包依赖于直接SQLite。现在省去了没有使用sqlite的目的的软件包(例如bake:持续集成系统)。而且还遗漏了很长时间没有更新的软件包。
这使我们剩下了以下基于直接SQLite提供额外功能的软件包。该列表包括更多级别的反向查找,以查看哪个其他程序包使用下面列出的程序包。