【发布时间】:2015-08-08 09:47:28
【问题描述】:
是否可以运行一个连接到 sqlite 数据库的 Shiny 应用程序,并且可以进行更改并保存到该数据库?我的问题类似于这个问题 - R script do not write in sqlite db if I run the script in shiny 但没有接受的答案,所以不确定它是否有效。
【问题讨论】:
是否可以运行一个连接到 sqlite 数据库的 Shiny 应用程序,并且可以进行更改并保存到该数据库?我的问题类似于这个问题 - R script do not write in sqlite db if I run the script in shiny 但没有接受的答案,所以不确定它是否有效。
【问题讨论】:
是的。这是可能的,这里有一个例子:
创建一个简单的数据库:
library(RSQLite)
con <- dbConnect(SQLite(), dbname="sample.sqlite")
dbWriteTable(con, "test", data.frame(value1 = letters[1:4], value2 = letters[5:8]))
dbDisconnect(con)
闪亮的应用程序:
library(shiny)
library(RSQLite)
runApp(list(
ui = bootstrapPage(
textInput("value1", label = "Value 1"),
textInput("value2", label = "Value 2"),
actionButton("action", label = "Write to DB"),
hr(),
tableOutput("table")
),
server = function(input, output){
data <- eventReactive(input$action, {
con <- dbConnect(SQLite(), dbname="sample.sqlite")
dbWriteTable(con, "test", data.frame(value1 = input$value1, value2 = input$value2, stringsAsFactors = FALSE), append = TRUE)
data <- dbReadTable(con, "test")
dbDisconnect(con)
return(data)
})
output$table <- renderTable(data())
}))
【讨论】:
是的,这是可能的。您可以使用RSQlite 包。您需要首先在您的机器上安装 SQLite 并创建一个数据库。您需要确保数据库文件和包含它的文件夹都对 shiny 用户(或运行闪亮应用程序的任何用户 - 默认用户是 shiny)具有写入权限。
这是连接和保存数据的方式:
db <- dbConnect(SQLite(), file)
query <- sprintf("INSERT INTO %s (%s) VALUES ('%s')", TABLE_NAME,
paste(names(data), collapse = ", "), paste(data, collapse = "', '"))
dbGetQuery(db, query)
dbDisconnect(db)
这是一个 Shiny 应用程序,其中包含有关如何使用 SQLite 和其他一些带 Shiny 数据库的更完整示例,以防万一。免责声明:我写了那个应用程序。 http://daattali.com/shiny/google-form-mock/
【讨论】: