> > But you already have pandas.read_sql_query. While that function
> > isn't really what I'd call simple, the complexity afaict -- dates,
> > floats, and chunks -- can be laid at Python's feet.
>
> I use R rather than python but the problem of dates is significant and
> I assume the same problem as in python. Consider this query:
>
> select myDate + 1 from myTable
>
> Assume that myTable comes from an R data frame with a myDate column
> that has R class of "Date". Internally R stores the myDate column as
> days since 1970-01-01 and since SQLite has no Date class it sends that
> number to SQLite. The select statement then adds 1 giving a number
> representing the next day but when one gets it back to R how can R
> know that that number is intended to represent a Date and so convert
> it to R's Date class? In fact it can't. With databases that have a
> Date type this is not a problem but it is a significant problem with
> SQLite.
What is the problem exactly? Sounds like the R thingy is broken. I do this
all the time using Python. You simply have to compile the library with
column_metadata and then use it. Sheesh. Even pysqlite has done this just
peachyu fine for about a decade.
> There are some hackish workarounds. For example, consider this
> self-contained reproducible R code:
> library(sqldf) # load package and dependencies
> myTable <- data.frame(myDate = as.Date("2000-01-31")) # define myTable
> sqldf("select myDate + 1 myDate from myTable")
> sqldf will use the heuristic of assuming that the myDate in the output
> has the same class as the myDate in the input (because they have the
> same name) and so will convert the output myDate column to the R
> "Date" class but the ability of such a heuristic to work is fairly
> limited.
> It is also possible to specify to sqldf the class of each output
> column but this is tedious and puts SQLite at a disadvantage since it
> is unnecessary if used with a different backend database that is able
> to return a Date class column.
> With numeric and character columns there is not much problem but as
> soon as one gets to date and date/time columns then this impedence
> mismatch appears and is one fo the main reasons an R user might decide
> to use a different backend.
There is no impedence mismatch. Simply inadequate wattage by the person(s)
solving the problem. As I said, this problem has been solved with SQLite and
Python for a decade. So I would suggest the problem is that the wattage was so
low, the lights were completely out.