通过 shiny 将更改保存到 sqlite db
Save changes to sqlite db via 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 apps - 默认用户是 shiny
)具有写入权限。 =15=]
这是您连接和保存数据的方式:
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/
是否可以 运行 连接到 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 apps - 默认用户是 shiny
)具有写入权限。 =15=]
这是您连接和保存数据的方式:
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/