[R-SIG-Finance] Problem using Quantmod and MySQL

Mark Knecht markknecht at gmail.com
Mon Mar 30 18:49:51 CEST 2015


On Mon, Mar 30, 2015 at 9:25 AM, Joshua Ulrich <josh.m.ulrich at gmail.com> wrote:
> On Sun, Mar 29, 2015 at 5:37 PM, Joshua Ulrich <josh.m.ulrich at gmail.com> wrote:
>> On Sun, Mar 29, 2015 at 1:50 PM, Ueli Hofstetter
>> <uelihofstetter at gmail.com> wrote:
>>> I have some problems loading symbols from an mysql db using getSymbols.
>>>
>>> Instead of repeating the issue, here is a link to the description on
>>> stackoverflow
>>>
>>> http://stackoverflow.com/questions/29333330/quantmod-error-loading-symbols-from-mysql-db
>>>
>>> Any help is greatly appreciated
>>>
>> The "character" method for dbConnect was removed in the 0.10 release
>> of RMySQL. I'm not sure whether or not this was intentional. It was
>> not mentioned in the release notes.
>>
> It was removed intentionally.  I do not have a MySQL database
> available for testing, so I would really appreciate some help from
> those who use this functionality.  Can someone please try this
> suggested edit:
> https://github.com/rstats-db/RMySQL/issues/62#issuecomment-87692704
>
> And provide feedback at: https://github.com/joshuaulrich/quantmod/issues/45
>
> Thanks!
> Josh
>
>
> --
> Joshua Ulrich  |  about.me/joshuaulrich
> FOSS Trading  |  www.fosstrading.com
>
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.



I'm happy to try it out but a little confused as to all the locations
I need to edit. Help me clear this up and I'll try it out immediately.

The failure is coming when I'm trying to get the data using the following code:

> if (DownloadNewData){
+   if (!UseMySQL){
+     for (i in 1:length(TestSym)){
+       print(paste("From ",SymbolSrc," -- ",TestSym[i]))
+       getSymbolsCont(TestSym[i], from = DataStart, to = DataEnd,
adjust = MyAdjust, src=SymbolSrc)
+     }
+   } else {
+     for (i in 1:length(TestSym)){
+       print(paste("From MySQL -- ",TestSym[i]))
+ #      getSymbols(TestSym[i], src="MySQL")
+       getSymbols(TestSym[i], src="MySQL", user="mark",
password="MyTempPassword", dbname=dbName)
+       assign(TestSym[i], get(TestSym[i])[paste0(DataStart,"/",DataEnd)])
+     }
+     dbDisconnect(dbc)
+   }
+ }
[1] "From MySQL --  SPY"
 Show Traceback

 Rerun with Debug

Error in (function (classes, fdef, mtable)  :
  unable to find an inherited method for function ‘dbConnect’ for
signature ‘"character"’


Am I correct that the suggestion is to edit two lines?

First, I use

library(RMySQL)

Is the first edit to change this to

requireNamespace("RMySQL", quietly = TRUE)

or do I add this to my code somewhere and keep the library command?

Later in my code I have:

if (UseMySQL){
  if (MyAdjust) { dbName = paste0(dbName, "Adjust")}
  dbc = dbConnect(MySQL(), dbname=dbName)
#  setDefaults(getSymbols.MySQL, user="mark",
password="MyTempPassword", dbname=dbName)
}

This would be where the second edit goes?

dbConnect("MySQL", ...) to dbConnect(RMySQL::MySQL, ...)

Thanks,
Mark



More information about the R-SIG-Finance mailing list