有许多Haskell SQLite绑定,这对我来说意味着在使用构建/使用SQLite绑定方面有许多不同的权衡。我试着通读了其中许多包的文档,但过了一段时间,它变得模糊了,我无法真正确定选择一个而不是另一个的主要权衡。
在Hackage上搜索发现:
- 直接sqlite
- HDBC-sqlite3
- hdbi-sqlite
- hsql-sqlite3
- hsSqlite3
- 持久性sqlite
- 最简单sqlite
- sql简单sqlite
- 硅铝石
- sqlite简单
- sqlite简单类型
- 绑定-sqlite3
永远不要发送一些"元"SQLite包。haskelldb-hdbc-sqlite3,haskelldb-hdb-sql-sqlite 3,语言sqlite,opaleye sqlite
希望有人能够成功地做到这一点,并能帮助我了解如何选择。
我看了一下上面提到的包。其中一些包是另一个包的依赖项(如opaleye-sqlite和sqlite-simple)依赖于直接sqlite。
因此,让我们首先来看一下提供实际驱动程序的包。它们大多已经过时了。似乎有3个仍然有最近的更新:
-
https://hackage.haskell.org/package/simplest-sqlitehttps://github.com/YoshikuniJujo/test_haskell/tree/master/features/ffi/sqlite3/simplest-sqlite我不会使用它,因为存储库上写着";这只是我的私人Haskell学习/测试库"
-
https://hackage.haskell.org/package/persistent-sqlite这一个是基于直接sqlite(看起来像是直接sqlite的一部分已经分叉)
-
最后一个是直接sqlite包。我使用这个网站来查找哪个包依赖于直接sqlite。现在忽略了不具有使用sqlite的目的的包(例如bake:Continuous integration system)。同时也忽略了很久没有更新的软件包。
这就给我们留下了下面的包,它提供了基于直接sqlite的额外功能。此列表包括更多级别的反向查找,以查看其他哪个包使用下面列出的包。
-
之前提到的持久sqlite
- 埃斯奎莱托
- 多事的
-
土拨鼠sqlite
-
opaleye sqlite
-
selda sqlite
-
sqlite简单
- 梁式硅铝石
我在-简单的图书馆家族。它们的功能非常全面,处于一个很好的中等抽象级别,在那里你可以在如何与数据库交互方面获得很大的灵活性。
我是opaleye sqlite的作者。它是用于SQLite的Opaleye的一个有点实验性的版本。Opaleye的Postgres版本非常坚固,在几个地方的生产中都有使用,但我只知道有一个人在生产中使用过Opaleye sqlite。