运行 SELECT * FROM table Pgx 中的查询?
Running a SELECT * FROM table query in Pgx?
我正在将 PostgreSQL 与 一起使用,我正在尝试 运行 SELECT * Pgx 中的 FROM 查询。
我似乎无法进行迭代,因为它只是 returns table 中的最后一个键。我还试图在 运行 回显 HTTP 服务器库上将其用作 JSON。
main.go 函数(从我的数据库连接文件中导入 connection.Conn)
func getLanguages(c echo.Context) (err error) {
Conn := connection.Conn
type Row struct {
Id int
Language string
Name string
}
rowArray := Row{}
rows, err := Conn.Query(context.Background(), "SELECT * FROM languages")
defer rows.Close()
// rowsCount := 0
for rows.Next() {
err := rows.Scan(&rowArray.Id, &rowArray.Language, &rowArray.Name)
if err != nil {
log.Fatal(err)
}
}
fmt.Println(rowArray)
return c.JSON(http.StatusOK, rowArray)
}
预期输出
id | language | name
----+------------+---------------------
1 | none | Plaintext
2 | go | Golang
3 | python | Python
4 | js | JavaScript
5 | jsx | React JSX
6 | ts | TypeScript
7 | tsx | React TSX
8 | tsconfig | TSConfig
9 | rb | Ruby
10 | sql | SQL
11 | sol | Solidity (Ethereum)
12 | html | HTML
13 | css | CSS
14 | csharp | C#
15 | haskell | Haskell
16 | rust | Rust
17 | scala | Scala
18 | svg | SVG
19 | graphql | GraphQL
20 | php | PHP
21 | powershell | PowerShell
22 | yaml | YAML
23 | json | JSON
实际输出
{"Id":23,"Language":"json","Name":"JSON"}
有什么帮助吗?
rowArray := Row{}
创建 Row
的单个实例。然后循环遍历结果并将它们存储在同一个变量中。所以每次迭代都会覆盖之前检索到的任何内容。如果有多个结果,则使用切片;类似于以下未经测试的代码:
rows, err := Conn.Query(context.Background(), "SELECT * FROM languages")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var rowSlice []Row
for rows.Next() {
var r Row
err := rows.Scan(&r.Id, &r.Language, &r.Name)
if err != nil {
log.Fatal(err)
}
rowSlice = append(rowSlice, r)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
fmt.Println(rowSlice)
我正在将 PostgreSQL 与 一起使用,我正在尝试 运行 SELECT * Pgx 中的 FROM 查询。
我似乎无法进行迭代,因为它只是 returns table 中的最后一个键。我还试图在 运行 回显 HTTP 服务器库上将其用作 JSON。
main.go 函数(从我的数据库连接文件中导入 connection.Conn)
func getLanguages(c echo.Context) (err error) {
Conn := connection.Conn
type Row struct {
Id int
Language string
Name string
}
rowArray := Row{}
rows, err := Conn.Query(context.Background(), "SELECT * FROM languages")
defer rows.Close()
// rowsCount := 0
for rows.Next() {
err := rows.Scan(&rowArray.Id, &rowArray.Language, &rowArray.Name)
if err != nil {
log.Fatal(err)
}
}
fmt.Println(rowArray)
return c.JSON(http.StatusOK, rowArray)
}
预期输出
id | language | name
----+------------+---------------------
1 | none | Plaintext
2 | go | Golang
3 | python | Python
4 | js | JavaScript
5 | jsx | React JSX
6 | ts | TypeScript
7 | tsx | React TSX
8 | tsconfig | TSConfig
9 | rb | Ruby
10 | sql | SQL
11 | sol | Solidity (Ethereum)
12 | html | HTML
13 | css | CSS
14 | csharp | C#
15 | haskell | Haskell
16 | rust | Rust
17 | scala | Scala
18 | svg | SVG
19 | graphql | GraphQL
20 | php | PHP
21 | powershell | PowerShell
22 | yaml | YAML
23 | json | JSON
实际输出
{"Id":23,"Language":"json","Name":"JSON"}
有什么帮助吗?
rowArray := Row{}
创建 Row
的单个实例。然后循环遍历结果并将它们存储在同一个变量中。所以每次迭代都会覆盖之前检索到的任何内容。如果有多个结果,则使用切片;类似于以下未经测试的代码:
rows, err := Conn.Query(context.Background(), "SELECT * FROM languages")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var rowSlice []Row
for rows.Next() {
var r Row
err := rows.Scan(&r.Id, &r.Language, &r.Name)
if err != nil {
log.Fatal(err)
}
rowSlice = append(rowSlice, r)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
fmt.Println(rowSlice)