![](/img/trans.png)
[英]Connecting: Oracle Autonomous DB and R - ROracle package issue
[英]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.