GO连接postgresql数据库

package connect

import (
   "database/sql"
   "fmt"
   _ "github.com/bmizerany/pq"
   "log"
   "wei.com/大伟代码/007.大伟运维监控管理工具/config"
)

func Connect() *sql.DB{
   dbinfo := config.DBinfo()
   dbStr := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable",dbinfo.Ip,dbinfo.Port,dbinfo.DbUser,dbinfo.DbPass,dbinfo.DbName)
   DB, err := sql.Open("postgres",dbStr)
   if err != nil {
      log.Println("打开数据时出错!")
   }
   return DB
}
package userinfo

import (
   "database/sql"
   "log"
)

func DeleteUserinfo(db *sql.DB) int64 {
   stmt,err := db.Prepare("delete from userinfo where Name =$1")
   if err != nil {
      log.Println("删除语句预备错误!")
      panic(err)
   }
   res,err := stmt.Exec("张三")
   if err != nil {
      log.Println("插入语句执行错误!")
      panic(err)
   }
   affect,err := res.RowsAffected()
   if err != nil {
      log.Println("插入语句感染行数错误!")
      panic(err)
   }
   return affect
}
package userinfo

import (
   "database/sql"
   "log"
)

func InsertUserinfo(db *sql.DB) int64 {
   stmt,err := db.Prepare("insert into  userinfo(Id,Name,Passwd,Work ) values ($1,$2,$3,$4) ")
   if err != nil {
      log.Println("插入语句预备错误!")
      panic(err)
   }
   res,err := stmt.Exec("3","张三","ruiyun123","HUPX,LINUX,")
   if err != nil {
      log.Println("插入语句执行错误!")
      panic(err)
   }
   n,err := res.RowsAffected()
   if err != nil {
      log.Println("插入语句感染行数错误!")
      panic(err)
   }
   return n
}
package userinfo

import (
   "database/sql"
   "log"
)

type User struct {
   Id     int
   Name   string
   Passwd string
   Work   string
   Other  string
}
//var MapUser map [string]User //name做key
var ListUser []User

func SelectUserinfo(db *sql.DB)  {
   ListUser = make([]User,1000,1000)
   rows,err := db.Query("select * from userinfo")
   if err != nil {
      log.Println(err)
      return
   }
   i := 0
   for rows.Next(){
      rows.Scan(&ListUser[i].Id,&ListUser[i].Name,&ListUser[i].Passwd,&ListUser[i].Work,&ListUser[i].Other)
      //fmt.Println(ListUser[i])
      i++
   }
}
package userinfo

import (
   "database/sql"
   "log"
)

func UpdateUserinfo(db *sql.DB) int64 {
   stmt,err := db.Prepare("update userinfo set Id=$1 where Name=$2")
   if err != nil {
      log.Println("更新语句预备错误!")
      panic(err)
   }
   res,err := stmt.Exec("71001214","汪伟")
   if err != nil {
      log.Println("更新语句执行错误!")
      panic(err)
   }
   affect,err := res.RowsAffected()
   if err != nil {
      log.Println("更新语句感染行数错误!")
      panic(err)
   }
   return affect
}
package main

import (
   "fmt"
   "github.com/gin-gonic/gin"
   "wei.com/大伟代码/007.大伟运维监控管理工具/route"
)



func main() {
   //启动web
   app := gin.Default()
   registerRouter(app)
   err := app.Run(":8080")
   if err != nil {
      fmt.Println(err)
   }
}

func registerRouter(router *gin.Engine) {
   new(route.Controller).Router(router)
}
package route

import (
   "github.com/gin-gonic/gin"
   "log"
   "wei.com/大伟代码/007.大伟运维监控管理工具/ZC"
   "wei.com/大伟代码/007.大伟运维监控管理工具/db/connect"
   "wei.com/大伟代码/007.大伟运维监控管理工具/db/userinfo"
)

type Controller struct {

}

func (handler Controller) Router(engine *gin.Engine){
   engine.Static("/cssDir","template/css")
   engine.LoadHTMLGlob("template/**/*")
   engine.GET("/",handler.Login)
   engine.POST("/LoginPost",handler.LoginPost)
   engine.GET("/ZCSNGL",handler.ZCSNGL)
   engine.GET("/ZCLPARGL",handler.ZCLPARGL)
}

func (handler Controller) Login(context *gin.Context){
   context.HTML(200,"login.html",gin.H{})
}

func (handler Controller) LoginPost(context *gin.Context){
   //获取客户输入
   u:=context.PostForm("u")
   p:=context.PostForm("p")
   //校验用户名和密码
   if len(u) < 0 {
      log.Println("用户名不能为空")
      context.JSON(244,gin.H{"message":"用户名称不能为空"})
      return
   }
   if len(p) < 6 {
      log.Println("密码少于6位")
      context.JSON(244,gin.H{"message":"密码少于6位"})
      return
   }
   // 验证数据库记录
   conn := connect.Connect()
   userinfo.SelectUserinfo(conn)
   for _,v := range userinfo.ListUser {
         if v.Name == u {
            if v.Passwd == p {
               //进入主页
               context.HTML(200,"index.html",gin.H{})
               break
            }
         }
   }
   conn.Close()
   return
   // 验证数据库记录失败,返回错误
   context.JSON(258,gin.H{"message":"验证数据库记录失败,用户密码错误!","用户":u,"密码":p })
}

func (handler Controller) ZCSNGL(context *gin.Context){
   context.HTML(200,"ZCSNGL.html",gin.H{"outString":ZC.ListSN2Str(ZC.ZCSNGL(connect.Connect()))})
   //l,i := ZC.ZCSNGL(connect.Connect())
   //context.JSON(200,l[:i+1])
}

func (handler Controller) ZCLPARGL(context *gin.Context){
   context.HTML(200,"ZCLPARGL.html",gin.H{"outString":ZC.ListLPAR2Str(ZC.ZCLPARGL(connect.Connect()))})
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下步骤将MySQL表结构同步到PostgreSQL数据库中: 1. 使用Go语言的MySQL驱动和PostgreSQL驱动分别连接MySQL数据库PostgreSQL数据库。 2. 查询MySQL数据库中需要同步的表结构信息,可以使用SHOW CREATE TABLE语句获取表结构信息。 3. 解析MySQL表结构信息,并将其转换为PostgreSQL的表结构信息,比如将MySQL的VARCHAR转换为PostgreSQL的TEXT。 4. 使用Go语言的PostgreSQL驱动在PostgreSQL数据库中创建新的表结构。 完整代码示例如下: ``` package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" _ "github.com/lib/pq" ) func main() { // connect to MySQL mysqlDB, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database") if err != nil { log.Fatal(err) } defer mysqlDB.Close() // connect to PostgreSQL postgresDB, err := sql.Open("postgres", "postgres://user:password@localhost/postgres?sslmode=disable") if err != nil { log.Fatal(err) } defer postgresDB.Close() // query MySQL table structure rows, err := mysqlDB.Query("SHOW CREATE TABLE mytable") if err != nil { log.Fatal(err) } defer rows.Close() // parse MySQL table structure and convert to PostgreSQL table structure var tableName string var createTableStmt string for rows.Next() { err := rows.Scan(&tableName, &createTableStmt) if err != nil { log.Fatal(err) } } if err := rows.Err(); err != nil { log.Fatal(err) } postgresTableStmt := convertMySQLToPostgreSQL(createTableStmt) // create new table in PostgreSQL _, err = postgresDB.Exec(postgresTableStmt) if err != nil { log.Fatal(err) } fmt.Println("Table structure synced from MySQL to PostgreSQL") } func convertMySQLToPostgreSQL(mysqlTableStmt string) string { // TODO: implement conversion logic return mysqlTableStmt } ``` 在上述代码中,需要根据实际情况修改MySQLPostgreSQL连接信息,以及需要同步的表名和表结构信息。同时,还需要实现convertMySQLToPostgreSQL函数,用于将MySQL的表结构信息转换为PostgreSQL的表结构信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值