2015-05-26 2 views
1

Возможно ли запустить приложение Shiny, которое подключается к базе данных sqlite и может вносить изменения и сохранять в эту базу данных? Мой вопрос аналогичен этим вопросам - R script do not write in sqlite db if I run the script in shiny, но ответа не было, поэтому не уверен, работает он или нет.Сохранить изменения в sqlite db через блестящие

ответ

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/

+0

Как вы можете убедиться, что файл базы данных и папка, содержащие его, имеют разрешения на запись для блестящего пользователя? Я использую Windows с sqlite, и я знаю, как изменять разрешения, но как я могу добавить разрешения для записи для блестящего пользователя? –

+0

Я не уверен, как это сделать в Windows, я бы это сделал –

+0

Я сделал, но ничего не нашел:/Моя проблема в том, что у меня есть база данных sqlite, сохраненная локально на моем компьютере, и я бы хотел, чтобы мой блестящий приложение (размещенное на shinyapps.io) для вставки новых строк данных в таблицу на основе ввода пользователем. В какой-то момент я работал, но после архивирования/удаления приложения и его повторного развертывания он не смог вставить новые строки. Он отлично читает базу данных, но не может вставлять новые строки в таблицу, странно. Btw приятное приложение, постоянное хранилище данных с помощью Shiny –