Возможно ли запустить приложение Shiny, которое подключается к базе данных sqlite и может вносить изменения и сохранять в эту базу данных? Мой вопрос аналогичен этим вопросам - R script do not write in sqlite db if I run the script in shiny, но ответа не было, поэтому не уверен, работает он или нет.Сохранить изменения в sqlite db через блестящие
1
A
ответ
1
Да. Можно и вот пример:
Создание простой БД:
library(RSQLite)
con <- dbConnect(SQLite(), dbname="sample.sqlite")
dbWriteTable(con, "test", data.frame(value1 = letters[1:4], value2 = letters[5:8]))
dbDisconnect(con)
Блестящая App:
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())
}))
0
Да, это возможно. Вы можете использовать пакет 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)
Вот Блестящая приложение, которое содержит более полные примеры того, как использовать SQLite и несколько других баз данных с блестящими в случае, если это помогает. Отказ от ответственности: я написал это приложение. http://daattali.com/shiny/google-form-mock/
Как вы можете убедиться, что файл базы данных и папка, содержащие его, имеют разрешения на запись для блестящего пользователя? Я использую Windows с sqlite, и я знаю, как изменять разрешения, но как я могу добавить разрешения для записи для блестящего пользователя? –
Я не уверен, как это сделать в Windows, я бы это сделал –
Я сделал, но ничего не нашел:/Моя проблема в том, что у меня есть база данных sqlite, сохраненная локально на моем компьютере, и я бы хотел, чтобы мой блестящий приложение (размещенное на shinyapps.io) для вставки новых строк данных в таблицу на основе ввода пользователем. В какой-то момент я работал, но после архивирования/удаления приложения и его повторного развертывания он не смог вставить новые строки. Он отлично читает базу данных, но не может вставлять новые строки в таблицу, странно. Btw приятное приложение, постоянное хранилище данных с помощью Shiny –