# \[ANN\] DBInterface.jl, MySQL.jl 1.0, and SQLite.jl 1.0

**URL:** https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701
**Category:** Data
**Created:** [February 16, 2020, 3:30am UTC](https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701 "2020-02-16T03:30:00Z")
**Posts on this page:** 6
**Page:** 1

<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: [February 16, 2020, 3:30am UTC](https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701/1 "2020-02-16T03:30:01Z")

</div>

Sorry for all the posting lately, but I’ve been trying to coordinate a few 1.0 releases, so bear with me 😅

This is the first official announcement of the new [DBInterface.jl](https://github.com/JuliaDatabases/DBInterface.jl) package, aiming to provide a standard API for database packages. The API aims to be pretty minimal to start out, to encourage adoption and avoid “over-engineering” things at the start, and new features can be added over time as more packages implement and usage grows. Currently, usage is:

- `DBInterface.connect(T, args...; kw...)`: open a `T` kind of database connection
- `DBInterface.prepare(conn, sql)`: prepare a SQL statement for execution
- `DBInterface.execute(stmt, params)`: Execute a statement, optionally binding parameters; returns a “cursor”, which is an iterator of rows

Along with this announcement is the official announcement of the 1.0 releases of the [MySQL.jl](https://github.com/JuliaDatabases/MySQL.jl) and [SQLite.jl](https://github.com/JuliaDatabases/SQLite.jl) packages. Highlights include:

- The first implementations of the DBInterface interfaces
- Fixing of a bunch of bugs/long-standing issues
- Improved documentations

For SQLite.jl, there were two breaking changes introduced, including:

- `SQLite.execute!` is now just `SQLite.execute`
- `SQLite.Query` is now `DBInterface.execute`: for executing and returning query results

For MySQL.jl, the package was overhauled quite extensively:

- Full support for prepared statements, with parameter binding, and returning binary results through bound buffers
- `DBInterface.connect` for opening connections, with keyword argument support for the many many configuration options for connections
- Ability to use a `.ini` file for specifying configuration options
- Full C API function wrappers in case you need additional functionality
- Usage of the new [MariaDB\_jll.jl](https://github.com/JuliaBinaryWrappers/MariaDB_Connector_C_jll.jl) BinaryBuilder solution for the client library (thanks @giordano!)

Please open issues if you run into things in the respective repos, or drop by the [#databases](https://julialang.slack.com/messages/databases/) slack channel to discuss as well.

Cheers!

-Jacob

---

<div class="post-metadata">

### Author: ![js135005](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/js135005/32/8219_2.png) [@js135005](https://discourse.julialang.org/u/js135005)
#### Post date: [February 25, 2020, 9:05pm UTC](https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701/2 "2020-02-25T21:05:20Z")

</div>

Are there any plans for DBInterface to support ODBC or MS SQL Server directly?

My actual usecase is that I need to pull data from MS SQL Server and have had a number of issues trying to build a DataFrame from SQL Server lately. There seem to be some strange package dependency interactions between ODBC, Tables, and DataFrames at the moment.

At the moment, ODBC v0.8.1 seems to work but downgrades Tables to v0.2.11. ODBC v0.8.5 fails on the same query that works with v0.8.1.

I have opened an issue (#255) about this for ODBC.

---

<div class="post-metadata">

### Author: ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)
#### Post date: [February 25, 2020, 10:32pm UTC](https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701/3 "2020-02-25T22:32:03Z")

</div>

Will julia have an api to duckdb with DBI interface? Duckdb is very fast with large data and much easier to understand than juliadb.

> **[GitHub - duckdb/duckdb: DuckDB is an in-process SQL OLAP Database Management...](https://github.com/duckdb/duckdb)**
>
> DuckDB is an in-process SQL OLAP Database Management System - GitHub - duckdb/duckdb: DuckDB is an in-process SQL OLAP Database Management System

---

<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: [February 26, 2020, 4:36am UTC](https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701/4 "2020-02-26T04:36:00Z")

</div>

Yes, I’m planning on updating ODBC.jl to support DBInterface.jl and Tables.jl 1.0. Hopefully in the next few days.

---

<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: [February 26, 2020, 4:36am UTC](https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701/5 "2020-02-26T04:36:30Z")

</div>

If someone writes a package for it! Volunteers welcome!

---

<div class="post-metadata">

### Author: ![js135005](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/js135005/32/8219_2.png) [@js135005](https://discourse.julialang.org/u/js135005)
#### Post date: [February 28, 2020, 3:42pm UTC](https://discourse.julialang.org/t/ann-dbinterface-jl-mysql-jl-1-0-and-sqlite-jl-1-0/34701/6 "2020-02-28T15:42:29Z")

</div>

Thank you, Jacob. ODBC 9.0 resolves my problems pulling data from MS SQL Server.

I will close ODBC issue #255.
