RMYSQL

RShiny建立与MySQL连接的interface

2020-05-12  本文已影响0人  Pingouin

RShiny介绍

是一款可以搭建简洁界面的工具,私认为比Python建立简单的Interface更加友好。前提是有本地的数据库,主要搭建的两个部分:UI 和 Server.


搭建成功的界面

1.UI设计

library(shiny) # 加载包 需先下载
library(ggplot2)
library(RMySQL)
######### 此处正式开始UI设计
ui =fluidPage(
# 界面主要分为三个Panel: tiltlepanel/sidebarpanel/mainpanel
  # 1.标题名字
  titlePanel("Shiny App"), 
 # 2.左边界面,即输入界面
  sidebarPanel(selectInput("site",  # 选项形式的输入
                           label = "Database",
                           choices = c("diabetes","looks like","have options"),
                           selected = "disbetes"),
                numericInput("id","user id",0), #数字形式的输入
                textInput("begindate", "write start date: ",''), # 文字形式的输入
                h5("e.g.'1991-05-26'"), # 显示文字,作为提示,可以删去
                textInput("enddate", "write end date:",''),
                submitButton("Go!")), # submit
 # 3.主界面,即右边的输出界面 
  mainPanel(h4("The activity record is :"),
            tableOutput("mydata"))
)

2. Server

server = (function(input, output) {       #function必须用 用括号括起来

## 1.input部分

  test1 <- reactive({  # 这个变量名在下面的output部分要用

    # 1.1 连接数据库
    db_con <- (dbConnect(RMySQL::MySQL(), #填自己的数据库信息
                         dbname="diabetes",  
                         user="root", 
                         host="127.0.0.1",  
                         password="yourpassword",
                         port=3306))

    # 1.2 Construct the fetching query 这里不知道怎么翻译了
    mydata <- dbGetQuery(db_con,paste( 
      #此处填要查的sql语句,注意引用了输入的变量,即在UI设计时输入的值
      "SELECT p.time, a.code_name FROM patient p
                  join activity a
                  on a.code = p.code
                  where id = '",input$id,"' and time between '",input$begindate,"' and '",input$enddate,"'")) # !注意此处的格式 
       # tips 新建脚本定义好变量,测试查询sql语句是否能用
       # 引用格式是 ->     ”,要引用的变量,“

      })
  
## 2.output部分
  output$mydata <- renderTable({   #显示表格,还可以改成rendertext等
    test1() #input变量名
  })  
})

runApp(list(ui = ui, server = server))

上一篇 下一篇

猜你喜欢

热点阅读