Я хочу вставить свой вывод приложения в базу данных sql, я успешно установил соединение между базой данных и блестящим приложением, вот мой код
library(shiny)
library(DBI)
ui <- fluidPage(
textInput("id", "Enter your ID:", "1"),
tableOutput("tbl")
)
server <- function(input, output, session) {
output$tbl <- renderTable({
conn <- dbConnect(
drv = RMySQL::MySQL(),
dbname = "shiny_database",
host = "r.cr7lk1jwjdht.us-east-2.rds.amazonaws.com",
username = "kartik",
password = "12345678")
on.exit(dbDisconnect(conn), add = TRUE)
query <- paste0("INSERT INTO db(id2 , id ) VALUES ('13','43') ")
# dbGetQuery(conn, query)
# query <- paste0("SELECT * FROM db WHERE id = '", input$id, "';")
dbGetQuery(conn, query)
})
}
shinyApp(ui, server)
Здесь я могу вставить свои данные, используя запрос вставки, но когда у меня есть огромные выходные данные для вставки, в этом случае я не могу использовать запрос вставки снова и снова. Может ли кто-нибудь помочь мне, как я могу вставить свои данные. После поиска я также обнаружил, что есть временная папка, в которой выходные данные хранятся временно, если возможно, что я могу использовать временную папку для помещения данных в базу данных.
Вставьте фрейм данных в базу данных, как показано ниже основного кода.
library(shiny)
library(DBI)
library(pool)
pool <- dbPool(drv = RMySQL::MySQL(),dbname = "db_name",host = "host",username = "user_name",password = "password", port = 3306)
ui <- fluidPage(
submitButton("submit")
)
server <- function(input, output){
dbWriteTable(pool, "dummyTable", df, append = TRUE) #this will insert the entire dataframe at once into dummyTable
}
shinyApp(ui, server)
Чтобы продолжить с этим методом, вам нужно объединить все значения в фрейм данных. Когда вы отправляете кнопку, фрейм данных будет вставлен в таблицу. (Не публикуйте учетные данные пользователя, если они не повторяются)
Как насчет использования actionButton()? https://shiny.rstudio.com/reference/shiny/1.0.1/actionButton.html
Вы можете поместить actionButton(inputId = "IDForActionButton")
в ui.R. actionButton()
создает кнопку в пользовательском интерфейсе. И когда кнопка нажата, это вызывает пересчет кодов server.R, которые включают input$IDForActionButton
.
Вы должны заключить input$id
с isolate(), как показано в ссылке. Поскольку без этого каждый раз при изменении содержимого входного $ id запускается пересчет кодов server.R, которые включают input$id
.
Возможно, использование библиотеки пулов поможет вам. https://shiny.rstudio.com/articles/pool-basics.html
dummyTable
и вы хотите хранить dataframedf
в базу данных. Иdf
иdummyTable
должны иметь одинаковые типы данных и поля.