010-Go 操作PostgreSQL数据库2
1:sql脚本
create table post(
id serial primary key,
content text,
author varchar(100)
)
2:post.go
package post import(
"fmt"
"database/sql"
_"github.com/lib/pq"
) const(
host = "192.168.72.128"
port = 5432
user = "test"
password = "test"
dbname = "testdb"
) type Post struct{
ID int
Content string
Author string
} var Db *sql.DB func init(){
var err error 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)
}
} func (post *Post) GetPosts(limit int) (posts []Post, err error){
sql := "select id,content,author from post limit $1"; rows, err := Db.Query(sql, limit)
if err != nil{
return
} defer rows.Close() for rows.Next(){
post := Post{}
err = rows.Scan(&post.ID, &post.Content, &post.Author)
if err != nil{
return
}
posts = append(posts, post)
} return
} func (p *Post) GetPost(id int) (post Post, err error){
post = Post{} sql := "select id,content,author from post where id=$1" err = Db.QueryRow(sql, id).Scan(&post.ID, &post.Content, &post.Author) return
} func (post *Post) AddPost() (err error){
sql := "insert into post(content,author) values($1,$2) returning id" stmt, err := Db.Prepare(sql)
if err != nil{
return
} defer stmt.Close() err = stmt.QueryRow(post.Content, post.Author).Scan(&post.ID) return
} func (post *Post) DelPost()(err error){
sql := "delete from post where id=$1"
_,err = Db.Exec(sql, post.ID)
return
} func (post *Post) EditPost() (err error){
sql := "update post set content=$1 where id=$2"
_,err = Db.Exec(sql, post.Content, post.ID)
return
}
3:main.go
package main import(
"fmt"
"Chapter02/post"
) func main(){
p := post.Post{
Content: "Hello java!",
Author: "王五",
} fmt.Println(p) err := p.AddPost()
if err != nil{
panic(err)
} fmt.Println(p) var posts = []post.Post{}
posts, err = p.GetPosts(10)
if err != nil{
panic(err)
}
for _,post := range posts{
fmt.Printf("ID:%d,Content:%s,Author:%s\n", post.ID, post.Content, post.Author)
} pp, err := p.GetPost(p.ID)
if err != nil{
panic(err)
}
fmt.Println(pp)
}
010-Go 操作PostgreSQL数据库2的更多相关文章
- hibernate 操作 Postgresql 数据库报 operator does not exist: integer = character varying
网上的说法如下: Java开发Postgresql 数据库兼容应用的问题,与Oracle有一些不同: Java类型映射数据库类型的不同,Oracle jdbc驱动程序处理Java String类型可正 ...
- C#/Python/MATLAB操作PostgreSQL数据库
PostgreSQL数据库是一个功能非常强大的开源数据库,支持多种SQL特性,非常好用.此外由于结合PostGIS可以实现空间数据库功能,故非常适合GIS领域的使用.本文旨在介绍C#.Python.M ...
- Python 操作 PostgreSQL 数据库
我使用的是 Python 3.7.0 PostgreSQL可以使用psycopg2模块与Python集成. sycopg2是用于Python编程语言的PostgreSQL数据库适配器. psycopg ...
- Jmeter_实现操作postgresql数据库
[环境] ①Jmeter版本:3.2,JDK:1.8: ②postgresql驱动包postgresql-9.3-1103.jdbc4,将该jar包置于..\apache-jmeter-3.2\lib ...
- 使用JPA + Eclipselink操作PostgreSQL数据库
首先确保您已经安装了PostgreSQL.您可以参考我这篇文章PostgreSQL扫盲教程. 使用Eclipse创建一个新的JPA project: Platform选择EclipseLink,作为J ...
- python操作postgresql数据库
import psycopg2 conn = psycopg2.connect(database=") cur = conn.cursor() cur.execute("CREAT ...
- 005-Go 操作PostgreSQL数据库
package main import( "fmt" "database/sql" _ "github.com/lib/pq" " ...
- ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
- Rust 连接 PostgreSQL 数据库
这次,我们使用 postgres 这个 crate 来连接和操作 PostgreSQL 数据库. 创建好项目后,在 cargo.toml 里添加 postgres 的依赖: 首先,导入相关的类型,并创 ...
随机推荐
- VisualStudio:让 XML 支持智能提示
将 XSD 文件拷贝到 VS 下的指定目录,我的电脑上的目录为:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages ...
- OCP-1Z0-051-题目解析-第22题
22. You need to create a table for a banking application. One of the columns in the table has the fo ...
- poj Kaka's Matrix Travels
Kaka's Matrix Travels 题目: 给出一个矩阵.求仅仅能向下或者向右的情况下能得到的最大和.一般的是指遍历一次,而这个是能够反复走K次.每经过一次后就把该点设为0.求最大和. 算法: ...
- 本地docker搭建gitlab, 并配置ldap认证
基于Docker在Mac OS X系统中的部署和设置GitLab的具体过程如下: 1. 安装Docker for Mac (参见https://docs.docker.com/docker-for ...
- spring-boot:run启动时,指定spring.profiles.active
Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile. 如果要指定spring-boot的spring.profiles. ...
- Chrome快捷键大全
Chrome上我基本不怎么用快捷键,但是发现了切换标签页的快捷键后觉得十分好用,所以就分享如下. 切换上一个标签:Ctrl+PgUp 切换下一个标签:Ctrl+PgDn 打开新标签页:Ctrl+T 通 ...
- 用开源项目CropImage实现图片的裁剪(不推荐)
之前介绍过一个截图的办法(http://www.cnblogs.com/tianzhijiexian/p/3900241.html),这里再分享个开源项目.它也是截图,但是效果不是很好,首先还是 ...
- 显卡、显卡驱动、CUDA、cuDNN之间的关系
作者:冬瓜哥链接:https://www.zhihu.com/question/59184480/answer/166167659来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- [转]Sphinx+Mysql+中文分词安装-实现中文全文搜索
From : http://blog.csdn.net/lgm252008/article/details/5373436 1.什么是SphinxSphinx 是一个在GPLv2 下发布的一个全文检索 ...
- mysqldump参数详细说明
Mysqldump参数大全(参数来源于mysql5.5.19源码) 参数 参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --al ...