繁体   English   中英

加载R软件包时连接到DB

[英]Connecting to a DB when loading R package

我正在设置一个R包,其中包含一个.sqlite数据库和一些访问数据库的功能。 将程序包加载到RI后,将调用以下函数以连接到DB:

db.con <- function(){
# get the data subdirectory 
  db.wd <- system.file("data", package = "MyPKG") 
# set up the connection
  drv <- dbDriver("SQLite")
  con <- dbConnect(drv,dbname = file.path(db.wd, "MyDB.db"))
  return(con)
 }

因此,每次加载程序包时,我都必须做:

con <- db.con()

如果我能避免每次都手动建立连接并自动连接到DB(在装入程序包时),那就太好了。 我试图将上面的代码放入.onLoad函数中,但是con对象对于包的函数不可见...

F,干杯

我将创建一个环境变量来存储您的设置。 这比使用全局环境更安全。

您可以在包中的某个位置定义它,例如:

.settings <- new.env()  ## the "." to not be exported 

然后在.attach函数中,使用以下命令对其进行初始化:

## you can use .onLoad also ...
.onAttach <- function(libname, pkgname) {
  .settings$con <- "connection"
}

然后,您可以在任何包函数中使用它,例如:

get_connection <- function() print(.settings$con)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM