簡體   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