开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

go语言学习--pongo2 fasthttp fasthttprouter pgx

简介:
+关注继续查看

一、安装

OS:Windows 10 X64

go:go1.8.3.windows-amd64.msi


二、安装golang包

pongo2,fasthttp,fasthttprouter,pgx

1.建立项目目录

f:/go_prog

2.安装相关包

Microsoft Windows [版本 10.0.14393]

(c) 2016 Microsoft Corporation。保留所有权利。

C:\Windows\system32>f:

F:\>cd go_prog

F:\go_prog>go get -u github.com/flosch/pongo2

F:\go_prog>go get -u github.com/valyala/fasthttp

F:\go_prog>go get -u github.com/buaazp/fasthttprouter

F:\go_prog>go get github.com/jackc/pgx



三、测试程序目录

(一)web测试

1.目录结构


F:\go_prog>

    |

    |---templates

    |     |

    |     |--- index.html

    |---template_pongo2.go


2.程序文件

1).template_pongo2.go

package main

import (

    "fmt"

    "log"

    "github.com/flosch/pongo2"

    "github.com/buaazp/fasthttprouter"

    "github.com/valyala/fasthttp"

)


var tpl_base_dir := ""

// Index is the index handler

func Index(ctx *fasthttp.RequestCtx) {

    ctx.SetContentType("text/html")

    tpl, err := pongo2.FromFile("templates/index.html")

    checkErr(err)

    // Now you can render the template with the given

    // pongo2.Context how often you want to.

    out, err := tpl.Execute(pongo2.Context{"user": "fred"})

    checkErr(err)

    fmt.Fprint(ctx, out)

}


func main() {

    router := fasthttprouter.New()

    router.GET("/", Index)


    log.Fatal(fasthttp.ListenAndServe(":8080", router.Handler))

}


func checkErr(err error) {

    if err != nil {

        panic(err)

    }

}



2).index.html


<html>

  <head>

   <title>test pongo2</title>

  </head>

  <body>

    ` user `

  </body>

</html>


(二)数据库测试:

1.数据库初始化

db: godb

table: userinfo


F:\go_prog>psql -U postgres godb

psql (9.6.3)

输入 "help" 来获取帮助信息.


godb=#

godb=# \d

                    关联列表

 架构模式 |       名称       |  类型  |  拥有者

----------+------------------+--------+----------

 public   | userinfo         | 数据表 | postgres

 public   | userinfo_uid_seq | 序列数 | postgres

(2 行记录)



godb=# \d userinfo

                               数据表 "public.userinfo"

    栏位    |          类型          |                     修饰词

------------+------------------------+-------------------------------------------------

 uid        | integer                | 非空 默认 nextval('userinfo_uid_seq'::regclass)

 username   | character varying(100) | 非空

 departname | character varying(500) | 非空

 created    | date                   |

索引:

    "userinfo_pkey" PRIMARY KEY, btree (uid)



godb=# select * from userinfo;

 uid | username | departname |  created

-----+----------+------------+------------

   2 | Peter    | cto        | 2017-08-17

(1 行记录)



godb=#



2.db_pgx.go


package main


import (

    "fmt"

    "github.com/jackc/pgx"

    "time"

)


var pool *pgx.ConnPool


type USER struct{

    uid int

    username string

    department string

    created time.Time

}


func main() {

    var err error

    connPoolConfig := pgx.ConnPoolConfig{

        ConnConfig: pgx.ConnConfig{

            Host:"localhost",

            User:"postgres",

            Password:"123456",

            Database:"godb",

            Port: 5432,

        },

        MaxConnections: 5,

    }

    pool, err = pgx.NewConnPool(connPoolConfig)

    checkErr(err)

    rows, err := pool.Query("select * from userinfo")

    checkErr(err)

    for rows.Next() {

        var user USER

        err = rows.Scan(&user.uid, &user.username, &user.department, &user.created)

        checkErr(err)

        fmt.Println( user.uid, user.username, user.department, user.created)

    }

}


func checkErr(err error) {

    if err != nil {

        panic(err)

    }

}



3.测试程序运行


F:\go_prog>go run db_pgx.go

2 Peter cto 2017-08-17 00:00:00 +0000 UTC


F:\go_prog>


本文转自 pgmia 51CTO博客,原文链接:http://blog.51cto.com/heyiyi/1957404


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Go语言学习查缺补漏ing Day1
### Go语言学习查缺补漏ing Day1 #### 零、前言 因为笔者基础不牢,在使用Go语言的时候经常遇到很多摸不着头脑的问题,所以笔者下定决心好好对Go语言进行查漏补缺,本【Go语言查缺补漏ing】系列主要是帮助新手Gopher更好的了解Go语言的易错点、重难点。希望各位看官能够喜欢,点点赞、关注一下呗! #### 一、多个defer的执行顺序 ```go package main import "fmt" func main() { defer fmt.Println("天才第一步") defer fmt.Println("雀氏纸尿裤") defer fmt.Pri
1092 0
Go语言学习笔记(一)Let's 干吧
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 简介     Go是Google开发的一种 静态强类型、编译型,并发型,并具有垃圾回收功能的编程语言。为了方便搜索和识别,有时会将其称为Golang。
1227 0
go语言简单入门
go语言简单入门
26 0
Go 语言入门很简单 -- 14. Go 并发初识 #私藏项目实操分享#
Go 语言入门很简单 -- 14. Go 并发初识 #私藏项目实操分享#
40 0
Go 语言入门很简单 -- 8. Go Maps #私藏项目实操分享#
Go 语言入门很简单 -- 8. Go Maps #私藏项目实操分享#
31 0
Go 语言入门很简单--技巧和窍门(Tips and Tricks)
Go 语言入门很简单--技巧和窍门(Tips and Tricks)
40 0
Go 语言入门很简单 -- 16. Go 并发互斥锁 #私藏项目实操分享#
Go 语言入门很简单 -- 16. Go 并发互斥锁 #私藏项目实操分享#
50 0
Go 语言入门很简单 -- 9. Go 函数 #私藏项目实操分享#
Go 语言入门很简单 -- 9. Go 函数 #私藏项目实操分享#
50 0
go语言入门
go 语言下载地址: http://code.google.com/p/go/downloads/list 下载 轻量开发工具 http://code.google.com/p/liteide/   我为什么喜欢Go语言 使用CGO封装Windows API 用Go写Windows桌面...
918 0
23703
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载