1. 程式人生 > 實用技巧 >UI自動化框架介紹

UI自動化框架介紹

sijms/go-ora 是純golang 編寫的oracle 驅動(目前不太穩定)但是已經很不錯了,以下是參考試用

參考程式碼

package main
import (
  "database/sql"
  "flag"
  "fmt"
  _ "github.com/sijms/go-ora"
  "log"
)
var (
  username  = flag.String("uname", "scott", "oracle username")
  password  = flag.String("password", "tiger", "oracle password")
  oraclehost = flag.String("oraclehost", "dbhost", "oracle database host")
  oracleport = flag.Int("oracleport", 1521, "oracle database port")
  dbname   = flag.String("dbname", "orclpdb1", "oracle database name")
)
func main() {
  flag.Parse()
  osqlInfo := fmt.Sprintf("oracle://%s:%s@%s:%d/%s", *username, *password, *oraclehost, *oracleport, *dbname)
  db, err := sql.Open("oracle", osqlInfo)
  if err != nil {
    log.Fatalf("connect oracle db error: %s:", err.Error())
   }
  rows, err := db.Query("select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') AS name from dual")
  if err != nil {
    fmt.Println("exec query error:", err.Error())
   }
  for rows.Next() {
    var name string
    rows.Scan(&name)
    fmt.Println("fetch item:")
    fmt.Println(name)
   }
}

執行說明

go run main.go -uname <username> -password <password> -oraclehost <ip> -dbname <db>

容器整合

這個就很簡單了,直接用最小映象處理

FROM golang:1.15-alpine AS build-env
WORKDIR /go/src/app
RUN /bin/sed -i 's,http://dl-cdn.alpinelinux.org,https://mirrors.aliyun.com,g' /etc/apk/repositories
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn
COPY . .
RUN apk update && apk add git \
  && go build
FROM alpine:latest
WORKDIR /app
RUN /bin/sed -i 's,http://dl-cdn.alpinelinux.org,https://mirrors.aliyun.com,g' /etc/apk/repositories
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
COPY --from=build-env /go/src/app/mygolang-oracle /app/mygolang-oracle
ENTRYPOINT [ "/app/mygolang-oracle" ]

說明

目前sijms/go-ora不是很穩定,但是至少很不錯了,是一個值得試用的純golang oracle驅動

參考資料

https://github.com/sijms/go-ora
https://github.com/rongfengliang/godror-golang-learning/tree/v2