将数据从Shiny app上传到MySQL数据库

将数据从Shiny app上传到MySQL数据库,mysql,r,shiny,Mysql,R,Shiny,我真的需要帮助(我尝试了很多不同的案例,搜索了很多论坛和教程)(( 目标很简单:我有一些MySQL数据库和表。我想将闪亮输入的值插入到该表中。我需要actionButton而不是submitButton,因为我的应用程序中还有另一个重要部分是live update。 另外,我也尝试过让代码中的一部分远离Shiny,一切都正常。所以,问题在于Shiny命令,但我不知道是什么。 这是我代码的一部分(我几乎删除了所有内容,只留下一个selectInput字段和actionButton): server

我真的需要帮助(我尝试了很多不同的案例,搜索了很多论坛和教程)(( 目标很简单:我有一些MySQL数据库和表。我想将闪亮输入的值插入到该表中。我需要actionButton而不是submitButton,因为我的应用程序中还有另一个重要部分是live update。 另外,我也尝试过让代码中的一部分远离Shiny,一切都正常。所以,问题在于Shiny命令,但我不知道是什么。 这是我代码的一部分(我几乎删除了所有内容,只留下一个selectInput字段和actionButton):

server.R
图书馆(闪亮)
图书馆(RMySQL)
#连接MySQL数据库并发送INSERT查询的函数

writingMarks我没有检查写入
MySql
函数,只检查了闪亮部分。请告诉我它是否有效。
您应该只关心
shinyServer
中的修改

library(shiny)

ui.R <- shinyUI(
  fluidPage(
    fluidRow(
      column(2,selectInput("task1", label=NULL,
                           choices = c(0:5), 
                           selected = 0))
    ),
    actionButton("uploadMarks","Занести оценки в журнал")
  )
)





library(shiny)
library(RMySQL)
Sys.setlocale(category = "LC_ALL", locale = "Russian")



server.R<-shinyServer( ##here
  function(input,output,session){
    observe({
      # Take a dependency on input$uploadMarks
      if(input$uploadMarks==0) return()

      #Use isolate() to avoid dependency on input$task1
      isolate({
        current_selection<-input$task1
        writingMarks("mathematics",current_selection,"test")
      })#iso
    }
    )
  }
)


runApp(list(
  ui={ ui.R},
  server =  {
    # function to connect to MySQL database and sending query of INSERT
    writingMarks <- function(course,homework,valueToInsert){
      courseDB <- dbConnect(MySQL(), user="root", password="password",
                            host="111.111.111.1", db=course)
      query <- paste("INSERT INTO `",course,"`.`homework",homework,
                     "` values (",rowToInsert,")",sep="")
      dbSendQuery(conn=courseDB, query)
      connections <- dbListConnections(MySQL())
      for(i in connections) {dbDisconnect(i)}
    }
    server.R
  }
))
库(闪亮)

ui.R您似乎需要定义
rowToInsert
或使用
valueToInsert
。还有
connections Stanislav,非常感谢!我的问题是我没有完全理解使用隔离()的目的。现在一切都很好!谢谢!很抱歉,我不能投票,因为我是初学者,我还没有名声(谢谢!祝你的项目好运!谢谢!由于你的帮助,项目几乎完成了
library(shiny)

ui.R <- shinyUI(
  fluidPage(
    fluidRow(
      column(2,selectInput("task1", label=NULL,
                           choices = c(0:5), 
                           selected = 0))
    ),
    actionButton("uploadMarks","Занести оценки в журнал")
  )
)





library(shiny)
library(RMySQL)
Sys.setlocale(category = "LC_ALL", locale = "Russian")



server.R<-shinyServer( ##here
  function(input,output,session){
    observe({
      # Take a dependency on input$uploadMarks
      if(input$uploadMarks==0) return()

      #Use isolate() to avoid dependency on input$task1
      isolate({
        current_selection<-input$task1
        writingMarks("mathematics",current_selection,"test")
      })#iso
    }
    )
  }
)


runApp(list(
  ui={ ui.R},
  server =  {
    # function to connect to MySQL database and sending query of INSERT
    writingMarks <- function(course,homework,valueToInsert){
      courseDB <- dbConnect(MySQL(), user="root", password="password",
                            host="111.111.111.1", db=course)
      query <- paste("INSERT INTO `",course,"`.`homework",homework,
                     "` values (",rowToInsert,")",sep="")
      dbSendQuery(conn=courseDB, query)
      connections <- dbListConnections(MySQL())
      for(i in connections) {dbDisconnect(i)}
    }
    server.R
  }
))