Golang操作PostgreSQL

4年以前  |  阅读数:147 次  |  编程语言:Golang 

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

package main

import _ "github.com/bmizerany/pq"
import "database/sql"
import "time"
import "fmt"

func main() {
    conf := "dbname=gobyexample sslmode=disable"
    db, openErr := sql.Open("postgres", conf)
    if openErr != nil {
        panic(openErr)
    }
    defer db.Close()
    fmt.Println(db)

    createRep, createErr := db.Exec(
        `CREATE TABLE items
         (a int, b float, c boolean,
          d text, e timestamp with time zone)`)
    if createErr != nil {
        panic(createErr)
    }
    fmt.Println(createRep)

    insertRep, insertErr := db.Exec(
        `INSERT INTO items VALUES
         (1, 2.0, false,
          'string', '2000-01-01T01:02:03Z')`)
    if insertErr != nil {
        panic(insertErr)
    }
    fmt.Println(insertRep)

    timeFmt := time.RFC3339
    t1, _ := time.Parse(timeFmt, "2000-04-08T03:02:01Z")
    t2, _ := time.Parse(timeFmt, "2007-03-02T10:15:45Z")
    minsertRep, minsertErr := db.Exec(
        `Insert INTO items VALUES
         ($1, $2, $3, $4, $5),
         ($6, $7, $8, $9, $10)`,
        3, 7.0, true, "more", t1,
        5, 1.0, false, "less", t2)
    if minsertErr != nil {
        panic(minsertErr)
    }
    num, _ := minsertRep.RowsAffected()
    fmt.Println(num)

    rows, selectErr := db.Query("SELECT * FROM items")
    if selectErr != nil {
        panic(selectErr)
    }
    defer rows.Close()
    for rows.Next() {
        var r1 int
        var r2 float64
        var r3 bool
        var r4 string
        var r5 time.Time
        rows.Scan(&r1, &r2, &r3, &r4, &r5)
        fmt.Println(r1, r2, r3, r4, r5)
    }
    rowsErr := rows.Err()
    if rowsErr != nil {
        panic(rowsErr)
    }

    dropRep, dropErr := db.Exec("DROP TABLE items")
    if dropErr != nil {
        panic(dropErr)
    }
    fmt.Println(dropRep)
}
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
将二进制数据转为16进制以便显示
获取IMSI
获取IMEI
Java生成UUID
PHP自定义函数获取搜索引擎来源关键字的方法
让你成为最历害的git提交人
在Zeus Web Server中安装PHP语言支持
指定应用ID以获取对应的应用名称
再谈PHP中单双引号的区别详解
Python 2与Python 3版本和编码的对比
php+ajax+json 详解及实例代码
Yii2汉字转拼音类的实例代码
php封装的page分页类完整实例
php数组合并array_merge()函数使用注意事项
PHP设计模式之工厂模式与单例模式
PHP实现简单爬虫的方法
php实现数组中索引关联数据转换成json对象的方法
wget使用技巧