gpt4 book ai didi

mysql - 如何将 Shiny 应用程序的 react 性输入值插入 MySQL 数据库?

转载 作者:可可西里 更新时间:2023-11-01 06:51:02 26 4
gpt4 key购买 nike

我使用 R 的 shiny 包创建了一个在线实验。假设我有 3 个 reactive values,分别称为 "toss"、"decision" 和“评级”
另外,我在Amazon 网络服务RDS 上启动了一个MySQL 数据库。版本为MySQL 5.6.22
我成功地设法将非 react 性值(如时间戳)发送到 MySQL 数据库。所以我假设问题是在 Server.R 代码中在哪里找到与 MySQL 对话的代码。对于非 react 性值,当代码在 react 性服务器功能之外(之前)时,它可以完美运行。但是对于 react 值,我想它应该在某个地方。

我试过这段代码:

Server.R  
library(shiny)
library(RMySQL)
library(DBI)
con <- dbConnect(MySQL(), dbname="db", username="myname", password="mypassword", host="myhost.com", port=xxxx)
function(input, output, session){
sql <- reactive({
paste("insert into scenario1 (toss, dec, rat, timestamp)
values (",input$toss,",",input$decision,",",input$rating,"now())")
})
result<-reactive({dbSendQuery(con, sql())})
}

这样,我就不会收到错误消息。因此,错误可能出在 insert into 代码中。

此外,我不确定我使用的软件包是否适合此目的。我尝试了很多东西。每当我通过将它从 SQL 引用中删除来添加一个 react 值时,它就会停止工作。我开始认为 RMySQL 缺少该功能。手册中没有关于 insert into 的内容。

有人能发现我犯的错误吗?

最佳答案

最后,我可以使用以下代码运行查询:

writingMarks <- function(input){ 
con <- dbConnect(MySQL(), dbname="db", username="myname", password="mypassword",
host="myhost.com", port=xxxx)
result <- sprintf<-("insert into scenario1 (toss, dec, timestamp) values (%s,%s,%s)",
input$toss, input$decision, "now()")
dbSendQuery(con, result)
}

我无法运行paste 查询。使用 sprintf 可以减少与逗号的混淆。

而且,是的,我确实必须添加一个 isolate()。我将它插入到 observe() 中。所以它看起来像这样:

observe({
if (input$condition==1){
isolate({
writingMarks(input)
})
}
return()
})

关于mysql - 如何将 Shiny 应用程序的 react 性输入值插入 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30213492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com