# Status of database packages and tools for, e.g. ORM tools

**URL:** <https://discourse.julialang.org/t/status-of-database-packages-and-tools-for-e-g-orm-tools/89933>\
**Category:** General Usage\
**Created:** [November 8, 2022, 2:29pm UTC](https://discourse.julialang.org/t/status-of-database-packages-and-tools-for-e-g-orm-tools/89933 "2022-11-08T14:29:11Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)\
**Post date:** [November 8, 2022, 2:29pm UTC](https://discourse.julialang.org/t/status-of-database-packages-and-tools-for-e-g-orm-tools/89933/1 "2022-11-08T14:29:11Z")

</div>

You can use e.g. LibPQ.jl for PostgreSQL, i.e. it directly. There’s also a specific **[PostgresORM.jl](https://github.com/JuliaPostgresORM/PostgresORM.jl)**

But I want to know of the best tools for databases that work for all, FunSQL.jl seems to be one.

> **[GitHub - asjir/FunnyORM.jl](https://github.com/asjir/FunnyORM.jl)**
>
> Contribute to asjir/FunnyORM.jl development by creating an account on GitHub.

> FunSQL.jl allows you to build better queries than, say SQLAlchemy, but it doesn’t provide an Object-Relational Mapping. This package does  
> […]  
> Status
> 
> - Only supports Integer ids.
> - Only supports SQLite.

That package depends on [DBInterface](https://juliahub.com/ui/Packages/DBInterface/bSj9k) so it’s unclear to me why it doesn’t support all. Many databases support it, though notably not PostgreSQL (i.e. LibPq.jl).

There’s also “SearchLight is the ORM layer of Genie.jl” (it’s independent of Genie.jl by now actually), so I’m curious what people do use, what’s the best ORM. It has e.g. related [SearchLightPostgreSQL](https://juliahub.com/ui/Packages/SearchLightPostgreSQL/pxkpt).

---

<div class="post-metadata">

**Author:** ![quinnj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/quinnj/32/11_2.png) [@quinnj](https://discourse.julialang.org/u/quinnj)\
**Post date:** [November 8, 2022, 5:51pm UTC](https://discourse.julialang.org/t/status-of-database-packages-and-tools-for-e-g-orm-tools/89933/2 "2022-11-08T17:51:37Z")

</div>

I’ve worked on [GitHub - JuliaData/Strapping.jl: Tools for mapping between Julia structs and 2D tabular data.](https://github.com/JuliaData/Strapping.jl), which is a “less magical” kind of ORM in that it just does mapping/flattening of Julia domain objects (via StructTypes.jl) into a 2D “table” object that can then be written out to a database (ODBC.load!, MySQL.load!, SQLite.load), or any other Tables.jl sink (Arrow.write, CSV.write, JSONTables.arraytable, etc).
