标签: sqlx

不支持扫描,存储driver.Value类型[] uint8到类型*time.Time

查询用户时遇到困难,定义如下:

type User struct {
    ID           int       `db:"id" json:"id"`            
    UserName     string    `db:"username" json:"username"` 
    Email        string    `db:"email" json:"email"`
    CreatedAt    time.Time `db:"created_at" json:"created_at"`
    StatusID     uint8     `db:"status_id" json:"status_id"`
    Deleted      uint8     `db:"deleted" json:"deleted"`
... 
}
Run Code Online (Sandbox Code Playgroud)

MariaDB中的表定义为:

+--------------+------------------+------+-----+-------------------+----------------+
| Field        | Type             | Null | Key | Default           | Extra          |
+--------------+------------------+------+-----+-------------------+----------------+
| id           | int(10) unsigned | NO   | PRI | NULL              | auto_increment |
| username     | varchar(50)      | NO   |     | NA                |                |
| email        | varchar(255)     | NO   |     | …
Run Code Online (Sandbox Code Playgroud)

mysql go sqlx

24
推荐指数
2
解决办法
9603
查看次数

Go:如何使用NamedExec()在Postgresql上获取最后一个插入ID

我使用jmoiron/sqlx库与我的Go应用程序中的PostgreSql服务器进行通信.在我的应用程序的某个地方,我有以下代码:

sqlQuery := `
    INSERT INTO table_to_insert  (
        code,
        status,
        create_time,
        create_by
    ) VALUES (
        '',
        0,
        CURRENT_TIMESTAMP,
        0
    ) RETURNING id
`

datas, err := tx.NamedExec(sqlQuery, structToInsert)
Run Code Online (Sandbox Code Playgroud)

问题:如何使用返回来获取最后一个插入ID tx.NamedExec()?我已经尝试datas.LastInsertId()但它总是返回0.

注意:我确定插入postgres是成功的.

postgresql go sqlx

19
推荐指数
2
解决办法
7218
查看次数

sqlx - 具有> 1列的非结构dest类型结构(2)

我搜索了错误,我发现了两个问题:

这是我的代码:

package main

import (
    "log"

    "github.com/jmoiron/sqlx"

    _ "github.com/lib/pq"
)

var schema = `
CREATE TABLE films (
  code int,
  name VARCHAR(10)
)`

type Film struct {
    code int
    name string
}

func main() {
    db, err := sqlx.Open("postgres", "user=demas password=root host=192.168.99.100 port=32768 dbname=mydb sslmode=disable")
    if err != nil {
        log.Fatal(err)
    }

    db.MustExec(schema)

    tx := db.MustBegin()
    tx.MustExec("INSERT INTO films(code, name) VALUES($1, $2)", 10, "one")
    tx.MustExec("INSERT INTO films(code, name) VALUES($1, $2)", 20, "two")
    tx.Commit()

    films := …
Run Code Online (Sandbox Code Playgroud)

go sqlx

16
推荐指数
1
解决办法
4194
查看次数

在Golang中有效地将一对多多对多数据库映射到struct

在Golang中处理一对多或多对多SQL关系时,将行映射到结构的最佳(高效,推荐,"Go-like")方式是什么?

以下面的示例设置,我试图详细介绍一些方法的优点和缺点,但是想知道社区推荐什么.

要求

  • 适用于PostgreSQL(可以是通用的但不包括MySQL/Oracle特定功能)
  • 效率 - 不强制每种组合
  • 没有ORM - 理想情况下仅使用database/sqljmoiron/sqlx

为清楚起见,我删除了错误处理

楷模

type Tag struct {
  ID int
  Name string
}

type Item struct {
  ID int
  Tags []Tag
}
Run Code Online (Sandbox Code Playgroud)

数据库

CREATE TABLE item (
  id                      INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
);

CREATE TABLE tag (
  id                      INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name                    VARCHAR(160),
  item_id                 INT REFERENCES item(id)
);
Run Code Online (Sandbox Code Playgroud)

方法1 - 选择所有项目,然后为每个项目选择标签

var items []Item
sqlxdb.Select(&items, "SELECT * FROM …
Run Code Online (Sandbox Code Playgroud)

sql struct go sqlx

13
推荐指数
2
解决办法
2799
查看次数

golang sqlx“缺少目标名称......”

将 sqlx 与 postgresql 一起使用时出现错误:“缺少目标名称 rec_created_by”

type Client struct {
    ClientID                    string          `json:"client_id"   db:"id"`
    Name                        string          `json:"name"    db:"name"`
    Version                     int16           `json:"version" db:"version"`
    IsActivated                 bool            `json:"is_activated"    db:"is_activated"`
    RecCreatedBy                string          `json:"rec_created_by"  db:"rec_created_by"`
    RecCreatedByUser            *User           `json:"rec_created_by_user" db:"-"`
    RecCreated                  *time.Time      `json:"rec_created" db:"rec_created"`
    RecModifiedBy               string          `json:"rec_modified_by" db:"rec_modified_by"`
    RecModifiedByUser           *User           `json:"rec_modified_by_user"    db:"-"`
    RecModified                 *time.Time      `json:"rec_modified"    db:"rec_modified"`
    CultureID                   string          `json:"culture_id"  db:"culture_id"`
    ...
}
func (c *Client) Get(id string) error {
    db, err := sqlx.Connect(settings.Settings.Database.DriverName, settings.Settings.GetDbConn())
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    _client := Client{} …
Run Code Online (Sandbox Code Playgroud)

go sqlx

9
推荐指数
1
解决办法
4269
查看次数

如何从Go/MySQL中记录所有传出的SQL语句?

我正在使用带有sqlx的非框架Go堆栈,以及用于Web项目的MySQL.

我想记录所有传出的SQL语句以进行调试.是否有可能做到这一点?希望得到这样的输出(从Rails项目复制):

  User Load (94.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`login` = 'bondnewyork' LIMIT 1
  User Load (16.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`login` = 'mkovarik' LIMIT 1
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`login` = 'mkovarik' LIMIT 1
  User Load (0.3ms)  SELECT `users`.* FROM `users` ORDER BY `users`.`id` DESC LIMIT 1
  User Load (0.4ms)  SELECT `users`.* FROM `users` ORDER BY `users`.`id` DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

mysql go sqlx

7
推荐指数
1
解决办法
4650
查看次数

如何使用 Golang lib/pq API 将二进制数据插入到 PostgreSQL BYTEA 列中?

我想在 BYTEA 列中插入一些二进制数据

我将如何将 somefile.tar.gz 的内容插入带有 BYTEA 列的表中?

  1. 一个例子会有所帮助
  2. 是否可以使用 BYTEA (postgres 9.2) 的 HEX 格式?
  3. 是否可以从/从 golang 流到/从 postgres 流?

postgresql go libpq sqlx pq

7
推荐指数
1
解决办法
2635
查看次数

使用 sqlx 在 Postgres 中取回新插入的行

我使用https://github.com/jmoiron/sqlx对 Postgres 进行查询。

插入新行时是否可以取回整行数据?

这是我运行的查询:

result, err := Db.Exec("INSERT INTO users (name) VALUES ($1)", user.Name)
Run Code Online (Sandbox Code Playgroud)

或者我应该只使用我现有的user结构作为数据库中新条目的真实来源?

sql postgresql go sqlx

6
推荐指数
1
解决办法
6042
查看次数

Sqlx通过指针的结构标记“缺少目标名称”

我有一个这样的模型:

type Course struct {
    Name string `db:"course_name"`
}

type Group struct {
    Course *Course
}
type Groups []Group
Run Code Online (Sandbox Code Playgroud)

当我尝试使用如下查询执行 sqlx.Select for Groups 时:

SELECT c.name as course_name FROM courses as c;
Run Code Online (Sandbox Code Playgroud)

我明白了

*main.Groups 中缺少目标名称 course_name

错误。

这段代码有什么问题?

go sqlx

6
推荐指数
1
解决办法
2万
查看次数

如何使用 sqlx 扫描嵌套结构?

假设我有两个模型,

    type Customer struct {
       Id      int     `json:"id" db:"id"`
       Name    string  `json:"name" db:"name"`
       Address Address `json:"adress"`
    }
    
    type Address struct {
       Street string `json:"street" db:"street"`
       City   string `json:"city" db:"city"`
    }

    // ...

    customer := models.Customer{}
    err := db.Get(&customer , `select * from users where id=$1 and name=$2`, id, name)
Run Code Online (Sandbox Code Playgroud)

但此扫描会引发错误:missing destination name street in *models.Customer

难道我做错了什么?正如你所看到的,我已经更新了该值对应的数据库。我仔细检查了一下,所以区分大小写应该不是问题。或者使用https://github.com/jmoiron/sqlx是不可能的吗?

我可以在文档中看到它,但仍然不知道如何解决它。 http://jmoiron.github.io/sqlx/#advancedScanning

users表声明为:

    CREATE TABLE `users` (
      `id` varchar(256) NOT NULL,
      `name` varchar(150) NOT NULL,
      `street` varchar(150) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

postgresql go sqlx

6
推荐指数
1
解决办法
9926
查看次数

标签 统计

go ×10

sqlx ×10

postgresql ×4

mysql ×2

sql ×2

libpq ×1

pq ×1

struct ×1