首页 > 其他分享 >go语言连接Mogdb

go语言连接Mogdb

时间:2024-04-15 11:25:48浏览次数:25  
标签:pq err -- db Mogdb go root 连接

go 语言连接 Mogdb
本文出处:https://www.modb.pro/db/388092

1.环境介绍
[root@mogdb-kernel-0004 src]# go version //yum安装的go go version go1.16.13 linux/amd64 [root@mogdb-kernel-0004 src]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
2.获取 pg 驱动
https://github.com/bmizerany/pq 支持database/sql驱动,纯Go写的 https://github.com/jbarham/gopgsqldriver 支持database/sql驱动,纯Go写的 https://github.com/lxn/go-pgsql 支持database/sql驱动,纯Go写的
(1)自动下载驱动包
go get github.com/bmizerany/pq go get github.com/jbarham/gopgsqldrive go get github.com/lxn/go-pgsql 注:3选1即可,但因为网络原因,大概率不能自动下载下来,所以我也会介绍手动安装驱动包
(2)手动安装驱动包
github 上手动下载驱动包,将其上 golang 安装目录的 src 文件夹下解压,

[root@mogdb-kernel-0004 src]# ll pq-master.zip
-rw-r--r-- 1 root root 17412 Mar 31 09:45 pq-master.zip
[root@mogdb-kernel-0004 src]# pwd
/usr/lib/golang/src
[root@mogdb-kernel-0004 src]# tree pq-master
pq-master
├── buf.go
├── conn.go
├── conn_test.go
├── encode.go
├── encode_test.go
├── error.go
├── LICENSE.md
├── README.md
├── types.go
├── url.go
└── url_test.go
0 directories, 11 files

复制

我选择的是 github.com/bmizerany/pq 这个驱动,所以需要在 src 下建立 github.com/bmizerany/pq 文件夹

[root@mogdb-kernel-0004 src]# mkdir -p github.com/bmizerany/pq
[root@mogdb-kernel-0004 src]# cd github.com/bmizerany/pq/
[root@mogdb-kernel-0004 pq]# mv /usr/lib/golang/src/pq-master/* ./ //将pq-master启动包移动到github.com/bmizerany/pq下
[root@mogdb-kernel-0004 pq]# pwd
/usr/lib/golang/src/github.com/bmizerany/pq
[root@mogdb-kernel-0004 pq]# ll
total 72
-rw-r--r-- 1 root root 1295 Nov 29 2013 buf.go
-rw-r--r-- 1 root root 12225 Nov 29 2013 conn.go
-rw-r--r-- 1 root root 7939 Nov 29 2013 conn_test.go
-rw-r--r-- 1 root root 2428 Nov 29 2013 encode.go
-rw-r--r-- 1 root root 3417 Nov 29 2013 encode_test.go
-rw-r--r-- 1 root root 1757 Nov 29 2013 error.go
-rw-r--r-- 1 root root 1058 Nov 29 2013 LICENSE.md
-rw-r--r-- 1 root root 2844 Nov 29 2013 README.md
-rw-r--r-- 1 root root 16426 Nov 29 2013 types.go
-rw-r--r-- 1 root root 1242 Nov 29 2013 url.go
-rw-r--r-- 1 root root 1181 Nov 29 2013 url_test.go
[root@mogdb-kernel-0004 pq]# go install github.com/bmizerany/pq //手动安装,没有任何信息报出,及说明安装完成
[root@mogdb-kernel-0004 pq]#

复制
3.创建简单测试表
//创建用户 openGauss=# create database test_db; CREATE DATABASE openGauss=# create user test_usr password '@'; NOTICE: The encrypted password contains MD5 ciphertext, which is not secure. CREATE ROLE openGauss=# alter user test_usr sysadmin; ALTER ROLE //连接用户创建表 [omm@mogdb-kernel-0004 ~]$ gsql -d test_db -p 26000 -r -U test_usr -W @ gsql ((MogDB 2.1.0 build 56189e20) compiled at 2022-01-07 18:47:53 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. test_db=> create table student(id int,name varchar(20)); CREATE TABLE
4.编写 go 文件
package main import ( "database/sql" "fmt" "log" _ "github.com/bmizerany/pq" ) //数据库相关信息 const ( host = "172.16.0.XXX" port = 26000 user = "test_usr" password = "
@*" dbname = "test_db" ) //连接数据库 func connectDB() *sql.DB{ psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+ "password=%s dbname=%s sslmode=disable", host, port, user, password, dbname) db, err := sql.Open("postgres", psqlInfo) if err != nil { panic(err) } err = db.Ping() if err != nil { panic(err) } fmt.Println("Successfully connected!") return db } //向表里插入数据 func insertUser(db *sql.DB) { stmt,err := db.Prepare("insert into student(id,name) values($1,$2)") if err != nil { log.Fatal(err) } _,err = stmt.Exec(1,"mgr") if err != nil { log.Fatal(err) }else { fmt.Println("insert into student success!") } } //查询数据 func query(db *sql.DB){ var id,name string rows,err:=db.Query(" select * from student where id=$1","1") if err!= nil{ fmt.Println(err) } defer rows.Close() for rows.Next(){ err:= rows.Scan(&id,&name) if err!= nil{ fmt.Println(err) } } err = rows.Err() if err!= nil{ fmt.Println(err) } fmt.Println(id,name) } func main() { db:=connectDB() insertUser(db) query(db) }
5.测试连接
[root@mogdb-kernel-0004 src]# go run conn.go
Successfully connected!
insert into student success!
1 mgr
测试成功

标签:pq,err,--,db,Mogdb,go,root,连接
From: https://www.cnblogs.com/helloopenGauss/p/18135532

相关文章

  • MogDB插件之高速灌数
    MogDB插件之高速灌数本文出处:https://www.modb.pro/db/336694对于写密集型系统,我们一般有如下方式来进行加速:使用批量插入代替单条insert语句插入更好的处理方式是使用copy语句代替insert语句同时也可以使用多个session并行代替单个session的语句操作相比直接使......
  • 9个MogDB存储过程示例
    9个MogDB存储过程示例本文出处:https://www.modb.pro/db/400634存储过程是一组结构化的查询和语句,例如控制语句和声明。这里介绍9个在不同情况下很有用的存储过程示例。创建测试表:createtablepublic.test1(idint,namevarchar(10));使用存储过程插入数据CREATEORR......
  • day02_我的Java学习笔记 (类型转换、+做连接符、变量自增自减运算、三元运算符、键盘
    Java语言基础知识1.类型转换1.1自动类型转换1.2表达式的自动类型转换1.3强制类型转换这里得出的结果为啥是-36呢???后面高级篇再细讲。2.运算符2.1算数运算符2.1.1基本算数运算符2.1.2案例:数值拆分2.2+符号做连接符【思考1】:a+'a'为啥......
  • mongo内存管理之cache占用过高,影响正常业务
    云数据库DDS实例shard连接数异常激增影响业务的事件,问题分析如下保障现象:在当天22日21:50-22:21时间段内,连接数异常激增,同时伴随有大量慢日志,实例整体响应速度下降。3月23日19:35贵司报障该实例再次出现shard连接数激增的现象。排查处理:经过排查发现3月22日21:50-......
  • jangow01
    虚拟机配置将攻击机和靶机放在同一网段下即可web渗透IP扫描nmap-sP192.168.11.0/24详细扫描nmap-A192.168.11.42探测web网站发现一可执行命令的地方,写入一句话木马,用蚁剑链接链接成功用蚁剑写文件,反弹链接,注意只有443端口出网web网站访问该文件攻击机监听......
  • Godot.NET C#IOC重构(3):视差景深背景
    目录相关链接前言目标效果景深效果实现无限长背景重复景深相关链接十分钟制作横版动作游戏|Godot4教程《勇者传说》#0前言这次来学习如何设置景深目标效果景深效果实现无限长背景只要开起了Mirror,Godot就会进行无限自我复制重复景深......
  • 利用Sqlmap API接口联动Google Hacking批量SQL注入检测
    目录前言slghack自动化搜集URLSqlmapAPI脚本slghack_sqli前言挖掘SQL注入漏洞的一种方式就是通过GoogleHacking搜索那些可能存在SQL的URL,然后手工的探测注入点。但是现在的SQL注入漏洞的网站是比较少的了,所以这样一个一个手工测效率有一点低。sqlmap比较好的一点是可批量扫描......
  • Go实践:用Sync.Map实现简易内存缓存系统
    介绍定义了一个Cache结构体,其中使用sync.Map作为底层数据结构来存储缓存项。Set方法用于设置缓存项,指定键、值以及过期时间。Get方法用于获取缓存项,如果缓存项存在且未过期,则返回值和true,否则返回nil和false。方法的接受者为指针类型,是为了对Cache对象进行操作,并在方法内部访问和......
  • Go语言实现指纹识别
    指纹识别指纹识别是一种用于识别网络设备、操作系统、应用程序或用户的技术。它通过收集和分析目标系统的特征信息,如网络协议、端口号、操作系统版本、应用程序版本等,来确定系统的身份或特征。指纹识别可以用于多种用途,包括网络侦察、入侵检测、安全审计等。常用的指纹识别方法:......
  • Mac终端GO输出字体颜色美化
    Mac终端Go输出字体颜色、样式美化Go语言模块:mactsGithub:https://github.com/lraiu/macts0x01简介macts意为MacOSTerminalStyle可以通过此模块,实现在mac系统终端上,美化程序文字输出包括:文字颜色:黑色(Black)、红色(Red)、绿色(Green)、黄色(Yellow)、蓝色(Blue)、......