func
main
(
)
{
db
,
_
:
=
sql
.
Open
(
"mysql"
,
"root:123@/xty"
)
rows
,
_
:
=
db
.
Query
(
"select category,tags from book where id=?"
,
2
)
columnTypes
,
_
:
=
rows
.
ColumnTypes
(
)
str1
:
=
columnTypes
[
0
]
.
DatabaseTypeName
(
)
name1
:
=
columnTypes
[
0
]
.
Name
(
)
str2
:
=
columnTypes
[
1
]
.
DatabaseTypeName
(
)
name2
:
=
columnTypes
[
1
]
.
Name
(
)
fmt
.
Println
(
str1
,
str2
)
fmt
.
Println
(
name1
,
name2
)
type1
:
=
columnTypes
[
0
]
.
ScanType
(
)
type2
:
=
columnTypes
[
1
]
.
ScanType
(
)
fmt
.
Println
(
type1
,
type2
)
var
book Book
var
(
category sql
.
RawBytes
tags sql
.
RawBytes
for
rows
.
Next
(
)
{
rows
.
Scan
(
&
category
,
&
tags
)
json
.
Unmarshal
(
category
,
&
book
.
category
)
json
.
Unmarshal
(
tags
,
&
book
.
tags
)
fmt
.
Println
(
book
)
c
:
=
Category
{
Id
:
9
,
Name
:
"sword coming"
}
t
:
=
[
]
int
{
1
,
2
,
3
,
4
,
5
,
6
,
7
}
c2j
,
err
:
=
json
.
Marshal
(
c
)
t2j
,
err
:
=
json
.
Marshal
(
t
)
res
,
err
:
=
db
.
Exec
(
"insert into book(id,category,tags) values(?,?,?)"
,
4
,
c2j
,
t2j
)
if
err
!=
nil
{
panic
(
err
)
fmt
.
Println
(
res
.
LastInsertId
(
)
)
JSON JSON
category tags
sql.RawBytes sql.RawBytes
{0 {2 walk in the daynight} [4 5 6]}
4 <nil>
程序package mainimport ( "database/sql" "encoding/json" "fmt" _ "github.com/go-sql-driver/mysql")type Book struct { id int category Category tags []int}type Category struct {...
json转golang结构 mysql转golang结构
有什么功能吗?
r . GET ( "/base64" , contoller . Base64 , middleware . UsageCount )
r . GET ( "/image2base64" , contoller . Image2Base64 , middleware . UsageCount )
r . GET ( "/tinyimg" , contoller . TinyImage , middleware . UsageCount )
r . GET ( "/hash" , contoller . Hash , middleware . UsageCount )
r . GET ( "/file-hash"
本文实例讲述了golang实现sql结果集以json格式输出的方法。分享给大家供大家参考,具体如下:
代码如下:func getJSON(sqlString string) (string, error) {
stmt, err := db.Prepare(sqlString)
if err != nil {
return nil, err
defer stmt.Close()
rows, err := stmt.Query()
if err != nil {
return nil, err
最近在做elasticsearch相关的开发,有这么一个需求,需要将mysql指定表的数据导入到elasticsearch的索引中,这个需求似乎比较容易,大致思路就是从遍历表中的每一行数据,转换成json,然后通过es的api接口提交到es中。
这个似乎是一个比较简单需求,只是有一点这是一个通用的操作,程序不需要关心遥操作的是什...
需求和思路
在一般的小项目或者一个小软件,例如客户端之类的小程序中,可能会需要数据的持久化.但是使用一般的数据库(Mysql)之类的不合适.使用sqlite3这种嵌入式的是个较好的方法,但是Go语言中sqlite3的库是C语言的,Cgo不支持跨平台编译.正是由于这种需求,才想到使用json格式将数据直接保存在文件中.
具体的思路是怎么样呢? 在Go语言中如果要将数据转化成json格式的话,有两种格式 struct 和 map. 如果同时需要增删查改功能的话,将map作为中间格式是比较合适的.接下来我们就来实现它.
这种操作的实现比较简单,直接将文件中的数据读取出来,使用json库
首先,你需要连接到 MySQL 数据库,可以使用 Go 语言标准库中的 `database/sql` 包来连接数据库。然后,可以使用 MySQL 的 binlog 来监听数据库的变化。这可以通过使用 Go 语言的 MySQL 驱动来实现,例如 `go-mysql-driver` 包。
具体来说,你可以使用 `SHOW BINARY LOGS` 命令查询 MySQL 服务器上的 binlog 文件列表。然后,可以使用 `START SLAVE` 命令启动 MySQL 复制,并使用 `SHOW SLAVE STATUS` 命令查询复制的状态。这样就可以监听到 MySQL 数据库的变化了。
需要注意的是,这种方法只能监听到数据库的 DML(数据操纵语言)操作,例如 INSERT、UPDATE 和 DELETE,不能监听到 DDL(数据定义语言)操作,例如 CREATE TABLE 和 ALTER TABLE。