Look what ODBC.jl say:
The ODBC.jl
package provides high-level julia functionality over the low-level ODBC API middleware. In particular, the package allows making connections with any database that has a valid ODBC driver, sending SQL queries to those databases, and streaming the results into a variety of data sinks.
So you already have/need some julia way how to access and work on DB.
You have three options:
a) make some standard protocol (simplest is borrow or get inspired by some useful one)
b) keep liberty for package developers to guess or win some de facto standard
c) ignore standardization and enjoy possibility that everything could be optimized (or screwed) in different way
ODBC.jl is probably (who knows?) using DBInterface where as I see now quinnj made this year this commit. So maybe we are in b) situation now?
I prefer a) but I am not complaining that we are not there! It needs some kind of maturity of language and community. I was just trying to answer question why it is useful to have (some day) good julia standard DB API.
About your question - you need to install and configure ODBC drivers and environment (and also maintain it then) to use it. Some ODBC driver are not free (which could or could not be a problem).
For example think about people who are using python + DB client + DBAPI package. Now if they are thinking about trying julia - they have additional complication. (They need to install and configure ODBC drivers or install pycall and try to glue it with python dbapi package or download data from DB to file using python , … ).
Think again about pandas developers. They could say: “Hey put SQL statement and DBAPI object into our function and it will work” instead of “Please forget about your favorite DBAPI package install and configure ODBC driver and you could use it in our function”.
Look at doc for ODBC.jl function load is without asterisk load
. An doc for LibPQ.jl function load is with asterisk load!
. You could see that if you start with ODBC (which seems to have pretty simplistic API - you really could not close connection to DB??) and wants to port program to using LibPQ.jl (not only because you need to clean memory from unnecessary connections) you have compatibility problems.
BTW I am pretty confused that load
or load!
function is used to save (!) data into database. (ODBC.jl doc is saying: “… it allows one to send data to a DB.”. (load and send are quite oposite for me but it could be just me! )) LibPQ.jl doc is going from my POV more confusing (for me!) way by describe this function LibPQ.load!(table, connection::LibPQ.Connection, query)
where query
parameter is insert statement!
I don’t want to dishonest people who create packages and docs!!! I just like to show example where maybe some kind of constructive cooperation could be useful. Useful not to discourage some from using julia and help others to have best experience.