如何从 postgresql 数据库中提取数据到我的 shinyapps.io
How to pull data from postgresql database to my shinyapps.io
shiny apps.io 中的 shiny 应用程序可以链接到我的 postgresql 数据库吗?我试过了,但它给了我错误,这是我的代码,它可以离线工作,但我无法以闪亮的方式启动它 apps.io
这是错误
DONE Uploading application bundle...DONE Deploying application:
42170... Waiting for task: 32473560 error: Parsing manifest
############################ Begin Log ##################################
############################# End Log ################################### Error: Unhandled Exception: Child Task 32473561 failed: Error parsing manifest: Unsupported locale:
4409_4409.UTF-8
我的短版 server.r
library(e1071)
library(cluster)
set.seed(123)
shinyServer(function(input, output) {
library("RPostgreSQL")
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host='localhost', port='5432', dbname='TESTDB',
user='postgres', password='root')
rk <- dbSendQuery(con,"select * from persons")
rs<-fetch(rk)
radioValues <- reactive({
gender <- input$gender
if (gender==1){
rs[rs$gender=="male",]
} else if (gender==2){
rs[rs$gender=="female",]
} else if (gender==3){
rs
}
})
selectedData <- reactive({
radioValues()[,input$show_vars, drop = FALSE]
})
output$mytable = renderDataTable({
selectedData()
})
dbDisconnect(con)
})
ui.r
library(shiny)
palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
"#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))
library("RPostgreSQL")
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host='localhost', port='5432', dbname='TESTDB',
user='postgres', password='root')
rk <- dbSendQuery(con,"select * from persons")
rs<-fetch(rk)
shinyUI(pageWithSidebar(
headerPanel(h1("Clustering Process Dashboard",style='font-family:"Times New Roman", Times, serif')),
sidebarPanel(
checkboxGroupInput('show_vars', 'Select Big 5 features',names(rs)[c(-1,-2)], selected = names(rs)[c(-1,-2,-3,-9)]),
),
mainPanel(
tabsetPanel(
tabPanel("Table", dataTableOutput('mytable'))
)
)
)
)
dbDisconnect(con)
请注意,我没有 post 我的完整代码,我只是 post 有关该问题的代码。这是我的最后一年项目,所以如果你想要我的完整代码,请联系我。我希望你能理解我对此的担忧。因此,如果您在此代码中的任何地方发现错误,我提前致歉。
是的,这是可能的。我有一个具有此配置的应用程序(托管在来自 Postgresql 数据库的 shinyapps.io 和 saving/pulling 数据上)。
但是,在您指定的当前配置下,它不起作用。原因如下:您 运行 在自己的个人计算机 (host=localhost) 上安装了 postgresql 服务器。当您 运行 您正在开发的应用程序(在 R Studio 中?)时,它可以正常工作,因为 R studio 中内置的本地 shinyapps 服务器也在您的本地计算机上 运行ning。当您将应用程序部署到 shinyapps.io 时,您的数据库连接字符串仍然指定 host="localhost" -- 但是当它在线部署时,localhost 指的是 shinyapps.io 上的本地服务器;并且该服务器未 运行 连接您的 Postgresql 数据库。因此,您会遇到错误。
要使其正常工作并按照您指定的方式连接到 "my postgresql database",您需要将主机从 "localhost" 更改为您的个人 IP 地址。这也意味着你需要让你的本地机器对互联网开放,以及你 运行ning postgresql 所在的端口。如果是个人互联网设置,您可以通过配置路由器来完成此操作。这不是一个理想的解决方案,原因有很多,其中最重要的是您在 shinyapps.io 上的应用程序只能在您的本地计算机处于 运行ning 并以指定的 IP 地址连接到互联网时才能运行。
更好的解决方案是设置基于云的 Postgresql 托管解决方案。许多公司提供这项服务(通常是收费的)。 Amazon Web Services 为小型数据库提供 12 个月的介绍性免费解决方案。这是帮助页面的 link,您还可以从中探索他们的服务:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html
有相当多的 setup/registration 步骤,但单击菜单并快速启动和 运行ning 实例也很容易。在云上拥有实例后,您需要将数据库连接信息更新到云。从那里,您的 shinyapps.io 实例可以在其在线服务器和在线数据库云服务器之间进行可靠通信。然后,当您对应用程序和数据库进行更改时,您需要双重部署更新:对 shinyapps.io 进行一次更新部署,并在需要时对数据库实例进行更新。请注意保护在 either/or 本地计算机上输入的数据,而不是通过将数据保存到云服务器的已部署应用程序输入的数据。
shiny apps.io 中的 shiny 应用程序可以链接到我的 postgresql 数据库吗?我试过了,但它给了我错误,这是我的代码,它可以离线工作,但我无法以闪亮的方式启动它 apps.io
这是错误
DONE Uploading application bundle...DONE Deploying application: 42170... Waiting for task: 32473560 error: Parsing manifest
############################ Begin Log ################################## ############################# End Log ################################### Error: Unhandled Exception: Child Task 32473561 failed: Error parsing manifest: Unsupported locale:4409_4409.UTF-8
我的短版 server.r
library(e1071)
library(cluster)
set.seed(123)
shinyServer(function(input, output) {
library("RPostgreSQL")
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host='localhost', port='5432', dbname='TESTDB',
user='postgres', password='root')
rk <- dbSendQuery(con,"select * from persons")
rs<-fetch(rk)
radioValues <- reactive({
gender <- input$gender
if (gender==1){
rs[rs$gender=="male",]
} else if (gender==2){
rs[rs$gender=="female",]
} else if (gender==3){
rs
}
})
selectedData <- reactive({
radioValues()[,input$show_vars, drop = FALSE]
})
output$mytable = renderDataTable({
selectedData()
})
dbDisconnect(con)
})
ui.r
library(shiny)
palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
"#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))
library("RPostgreSQL")
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host='localhost', port='5432', dbname='TESTDB',
user='postgres', password='root')
rk <- dbSendQuery(con,"select * from persons")
rs<-fetch(rk)
shinyUI(pageWithSidebar(
headerPanel(h1("Clustering Process Dashboard",style='font-family:"Times New Roman", Times, serif')),
sidebarPanel(
checkboxGroupInput('show_vars', 'Select Big 5 features',names(rs)[c(-1,-2)], selected = names(rs)[c(-1,-2,-3,-9)]),
),
mainPanel(
tabsetPanel(
tabPanel("Table", dataTableOutput('mytable'))
)
)
)
)
dbDisconnect(con)
请注意,我没有 post 我的完整代码,我只是 post 有关该问题的代码。这是我的最后一年项目,所以如果你想要我的完整代码,请联系我。我希望你能理解我对此的担忧。因此,如果您在此代码中的任何地方发现错误,我提前致歉。
是的,这是可能的。我有一个具有此配置的应用程序(托管在来自 Postgresql 数据库的 shinyapps.io 和 saving/pulling 数据上)。
但是,在您指定的当前配置下,它不起作用。原因如下:您 运行 在自己的个人计算机 (host=localhost) 上安装了 postgresql 服务器。当您 运行 您正在开发的应用程序(在 R Studio 中?)时,它可以正常工作,因为 R studio 中内置的本地 shinyapps 服务器也在您的本地计算机上 运行ning。当您将应用程序部署到 shinyapps.io 时,您的数据库连接字符串仍然指定 host="localhost" -- 但是当它在线部署时,localhost 指的是 shinyapps.io 上的本地服务器;并且该服务器未 运行 连接您的 Postgresql 数据库。因此,您会遇到错误。
要使其正常工作并按照您指定的方式连接到 "my postgresql database",您需要将主机从 "localhost" 更改为您的个人 IP 地址。这也意味着你需要让你的本地机器对互联网开放,以及你 运行ning postgresql 所在的端口。如果是个人互联网设置,您可以通过配置路由器来完成此操作。这不是一个理想的解决方案,原因有很多,其中最重要的是您在 shinyapps.io 上的应用程序只能在您的本地计算机处于 运行ning 并以指定的 IP 地址连接到互联网时才能运行。
更好的解决方案是设置基于云的 Postgresql 托管解决方案。许多公司提供这项服务(通常是收费的)。 Amazon Web Services 为小型数据库提供 12 个月的介绍性免费解决方案。这是帮助页面的 link,您还可以从中探索他们的服务:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html
有相当多的 setup/registration 步骤,但单击菜单并快速启动和 运行ning 实例也很容易。在云上拥有实例后,您需要将数据库连接信息更新到云。从那里,您的 shinyapps.io 实例可以在其在线服务器和在线数据库云服务器之间进行可靠通信。然后,当您对应用程序和数据库进行更改时,您需要双重部署更新:对 shinyapps.io 进行一次更新部署,并在需要时对数据库实例进行更新。请注意保护在 either/or 本地计算机上输入的数据,而不是通过将数据保存到云服务器的已部署应用程序输入的数据。