pgx是go的一个专门用于连接postgre数据库的开源库接口,在后端开发中,我们经常需要进行后端的数据库的数据传输操作。 对于用户的存储可以是如下:
var (
dbConn *pgx.Conn
userList []*controller.User
userLoggedIn []*controller.UserToken
)
定义了全局变量dbConn ,用于连接postgre数据库的句柄,userList是数据库中的用户列表,userLoggedIn是当前网页的登录用户的Token。
通过以下的函数进行简单的数据库连接:
func connectDb() {
dbUser := "cstuser"
dbPwd := "cst3721"
db := "kdb"
dbPort := "16900"
dbHost := "juejin.cn"
var err error
url := fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=require",
dbUser, dbPwd, dbHost, dbPort, db)
dbConn, err = pgx.Connect(context.Background(), url)
if err != nil {
msg := fmt.Sprintf("Unable to connect to database: %v\n", err)
fmt.Println(msg)
os.Exit(-1)
return
}
s := "create table if not exists t_user(id serial primary key,name varchar(32),cert varchar(32))"
_, err = dbConn.Exec(context.Background(), s)
if err != nil {
msg := fmt.Sprintf("Unable to connect to database: %v\n", err)
fmt.Println(msg)
os.Exit(-1)
return
}
fmt.Printf("connected to %s successfully\n", dbHost)
}
以上代码是简单的连接postgre数据库的连接句柄,通过输入dbHost,dbPwd, dbPort等参数就可以连接了,对于小白十分友好。
下面是一个搜索数据库的简单例子:
func selectUserDB(userd int64) (muserList []*controller.User, err error) {
s := "select * from ctuser.t_user where id==$1"
rows, err := dbConn.Query(context.Background(), s, userd)
if err != nil {
msg := fmt.Sprintf("Get user failed!: %v\n", err)
fmt.Println(msg)
os.Exit(-1)
return nil, err
}
defer rows.Close()
var nm, ct string
var mid int64
for rows.Next() {
rows.Scan(&mid, &nm, &ct)
tmpUser := controller.User{mid, nm, ct}
muserList = append(muserList, &tmpUser)
}
fmt.Println("the userInfo len is: &d\n", len(muserList))
return
}
通过执行Query语句,并通过append方法压入用户序列。
func main() {
connectDb()
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(JSONMiddleware)
r.Get("/", func(w http.ResponseWriter, _ *http.Request) {
w.Write([]byte("Hello World!"))
})
r.Post("/user", getUser)
r.Post("/register", getRegister)
r.Post("/login", getLogin)
r.Post("/logout", getLogout)
http.ListenAndServe("localhost:5200", r)
}
简单的route注册,使用了chi库。