使用sql数据库驱动程序

2023-12-01

最终用户(开发或生产)能否推荐一个最好使用“database/sql”包的 Sql 驱动程序包。我对 Postgres、ODBC、MySql(可能还有其他东西,但对于大容量的东西 - 即不是 Sqlite)感兴趣,它们最好可以在 Windows 和/或 Linux(最好是两者)上使用。为了让我感兴趣,它可能需要最近更新/维护,并且必须与最新的 Go 版本一起使用。效率(吞吐量)显然很重要。欢迎任何相关意见。


GO-SQL-驱动程序(MySQL):

https://github.com/Go-SQL-Driver/MySQL

样本表:

CREATE TABLE `userinfo` (
    `uid` INT(10) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(64) NULL DEFAULT NULL,
    `departname` VARCHAR(64) NULL DEFAULT NULL,
    `created` DATE NULL DEFAULT NULL,
    PRIMARY KEY (`uid`)
)

CREATE TABLE `userdetail` (
    `uid` INT(10) NOT NULL DEFAULT '0',
    `intro` TEXT NULL,
    `profile` TEXT NULL,
    PRIMARY KEY (`uid`)
)

示例代码:

package main

import (
    _ "github.com/Go-SQL-Driver/MySQL"
    "database/sql"
    "fmt"
)

func main() {
    db, err := sql.Open("mysql", "reckhou:reckhou@/test?charset=utf8")
    checkErr(err)

    //Insert
    stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
    checkErr(err)

    res, err := stmt.Exec("reckhou", "IT", "2010-10-02")
    checkErr(err)

    id, err := res.LastInsertId()
    checkErr(err)

    fmt.Println(id)

    // Update
    stmt, err = db.Prepare("update userinfo set username=? where uid=?")
    checkErr(err)

    res, err = stmt.Exec("update", id)
    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    //Query
    rows, err := db.Query("SELECT * FROM userinfo")
    checkErr(err)

    for rows.Next() {
        var uid int
        var username string
        var department string
        var created string
        err = rows.Scan(&uid, &username, &department, &created)
        checkErr(err)
        fmt.Println(uid)
        fmt.Println(username)
        fmt.Println(department)
        fmt.Println(created)
    }

    //Delete
    stmt, err = db.Prepare("delete from userinfo where uid=?")
    checkErr(err)

    res, err = stmt.Exec(id)
    checkErr(err)

    affect, err = res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    db.Close()

}

func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}

PostgreSQL:

https://github.com/bmizerany/pq

样本表:

CREATE TABLE userinfo
(
    uid serial NOT NULL,
    username character varying(100) NOT NULL,
    departname character varying(500) NOT NULL,
    Created date,
    CONSTRAINT userinfo_pkey PRIMARY KEY (uid)
)
WITH (OIDS=FALSE);

CREATE TABLE userdeatail
(
    uid integer,
    intro character varying(100),
    profile character varying(100)
)
WITH(OIDS=FALSE);

示例代码:

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

func main() {
    db, err := sql.Open("postgres", "user=reckhou password=reckhou dbname=test sslmode=disable")
    checkErr(err)

    //Insert
    stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")
    checkErr(err)

    res, err := stmt.Exec("reckhou", "IT", "2010-10-01")
    checkErr(err)

    id, err := res.LastInsertId()
    checkErr(err)

    fmt.Println(id)

    // Update
    stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2")
    checkErr(err)

    res, err = stmt.Exec("update", 1)
    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    // Query
    rows, err := db.Query("SELECT * FROM userinfo")
    checkErr(err)

    for rows.Next() {
        var uid int
        var username string
        var department string
        var created string
        err = rows.Scan(&uid, &username, &department, &created)
        checkErr(err)
        fmt.Println(uid)
        fmt.Println(username)
        fmt.Println(department)
        fmt.Println(created)
    }

    // Delete
    stmt, err = db.Prepare("delete from userinfo where uid=$1")
    checkErr(err)

    res, err = stmt.Exec(1)
    checkErr(err)

    affect, err = res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    db.Close()

}

func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用sql数据库驱动程序 的相关文章

  • SQL查询中的Python列表作为参数[重复]

    这个问题在这里已经有答案了 我有一个 Python 列表 比如说 l 1 5 8 我想编写一个 SQL 查询来获取列表中所有元素的数据 例如 select name from students where id IN THE LIST l
  • 将 Websocket 消息发送到 Go 中的特定通道(使用 Gorilla)

    我对 Go 很陌生 并且发现自己使用套接字作为我的第一个项目 这是一个多余的问题 但我无法理解如何将 websocket 更新发送到 Go 中的特定通道 使用 Gorilla 我在用此链接中的代码示例 https github com go
  • 命名和未命名类型

    问题 我最近开始阅读Golang规格手册 https golang org ref spec并陷入试图理解的困境有名和无名类型在相关部分 https golang org ref spec Types 我来自动态语言 这让我有点头疼 手册指
  • 为什么使用参数化查询将数据插入表比将值附加到查询字符串更快?

    为什么使用参数化查询向表中插入数据 string queryString insert into product id name values id name 比将值附加到查询字符串更快 string queryString insert
  • SQL Server 'FETCH FIRST 1 ROWS ONLY' 无效使用

    我正在尝试将 Db2 查询转换为 SQL Server 我遇到了一个我不熟悉的构造 仅 FETCH FIRST 1 ROWS 这是在 db2 上运行的查询 select from products series where state xx
  • 基于两个数据库表之间的数据比较创建oracle视图

    我有下表 我想创建视图以便descr O 以及对于常见的id isin两个表中的字段值 检查ratio字段并只取其中的行ratio字段值低 for descr O 如果 id isin 存在于一个表中但不存在于另一个表中 则获取这些行 双向
  • 分区表查询仍然扫描所有分区

    我有一个包含超过十亿条记录的表 为了提高性能 我将其分区为30个分区 最常见的查询有 id 在他们的 where 子句中 所以我决定对表进行分区id column 基本上 分区是这样创建的 CREATE TABLE foo 0 CHECK
  • 将 SQL 变量传递给 ASP

    这里只是有点语法问题 我正在使用 SQL 和 ASP 并且到目前为止有以下代码 set rs Server CreateObject ADODB recordset rs Open Select from Questions conn sq
  • BigQuery 标准 SQL 中具有不同架构的联合表

    附加具有不同架构的表的最佳方法是什么 表 0 架构 表1 架构 这很好用 SELECT img1 NULL as img2 FROM xxx staging table0 UNION ALL SELECT img1 img2 FROM xx
  • PostgreSQL 8.3 中不为空且唯一约束的增量字段

    我有一个表 项目 其中有一列 位置 位置具有唯一且非空的约束 为了在位置 x 插入新行 我首先尝试增加后续项目的位置 UPDATE items SET position position 1 WHERE position gt x 这会导致
  • 根据注册后的时间自动删除Wordpress用户?

    在使用用户访问管理器的基本 WordPress 3 1 设置中 是否可以自动删除 x 天前的用户 我没有找到此功能的插件 人们将如何实施这一举措 我是否能够使用 sql 或 php 查询设置一个 cron 作业 从而每天自动从数据库中删除
  • 删除除一行之外的所有具有重复值的行

    我有一个包含三列的表 KEY VALUE and LAST UPDATED 有重复的VALUE字段 我想删除所有具有相同的行VALUE和其他人一样except获取最新更新的信息 因此 如果表包含这些行 1 A 2013 11 08 2 B
  • 关于数据库变更的通知

    我正在尝试一种场景 其中我想使用任何用户提交的更改来更新在不同 PC 上运行的桌面 UI 例如 Application1 安装在 PC1 PC2 和 PC3 上 假设所有 PC 都运行此应用程序 假设 PC1 上的用户 1 更改数据并提交到
  • SQL Server中根据条件进行计数

    有谁知道如何在 SQL Server 中根据条件进行计数 Example 如何对表中名称为 system 的记录以及 CaseID 记录总数进行列计数 顾客表 UserID CaseID Name 1 100 alan 1 101 alan
  • 在 apex 中根据 2 种不同类型的用户进行自定义身份验证

    我有一种身份验证方案 目前仅验证用户是否在一个表中 即雇主表中 现在我希望这个身份验证方案来验证用户是雇主还是雇员 并且根据他们是雇主还是雇员 它应该将他们重定向到不同的页面 首先 我如何在身份验证脚本中包含第二个表 我最大的问题是 当员工
  • 对于 XML 路径:如何将属性和值保留在同一节点中

    我在使用时遇到一些问题FOR XML PATH 我的情况是 我运行了如下脚本 属性CCY和价值AMOUNT合并到同一个节点 脚本1 SELECT USD AS Amount Ccy 123000 AS Amount Foo AS Foo F
  • SQL 未插入到 Yii 中具有关系的表中

    我正在尝试创建一个用户 但所有值都没有插入到数据库中 Systems user 表与partys 表有关系 因为party id 是sytems user 的主键 没有插入任何内容 甚至没有错误 它只是返回到 创建 页面 这是我的架构 Ta
  • 如何查找列表/集合是否包含在另一个列表中

    我有一个产品 ID 列表 我想找出哪些订单包含所有这些产品 订单表的结构如下 order id product id 1 222 1 555 2 333 显然我可以通过 PHP 中的一些循环来做到这一点 但我想知道是否有一种优雅的方法可以纯
  • mysql 中的 max(长度(字段))

    如果我说 select max length Name from my table 我得到的结果是 18 但我也想要相关数据 所以如果我说 select max length Name Name from my table 这是行不通的 我
  • SQL Server 查看主键

    有没有办法在 sql server 中为视图提供主键 我知道在oracle中这是可能的 我不关心更新它的只读视图 但其他人正在 ms access 中使用它 所以我希望显示我知道正确的约束 是的 您可以创建一个索引视图 http msdn

随机推荐

  • MiniZinc 数组中字符串值的索引

    问题 给定一个 MiniZinc 字符串数组 int numStats set of int Stats 1 numStats array Stats of string statNames 使用从 MiniZinc 数据文件加载的数据 n
  • 无法安装 NuGet 包 - 500 内部服务器错误

    这对我来说毫无意义 NuGet 以前工作正常 但现在当我尝试安装软件包时它会抛出服务器错误 我已经卸载并重新安装了最新的 NuGet 但仍然没有成功 PM gt Install Package EntityFramework Install
  • 为什么 LocationManager 没有 LastKnown 位置?

    我想要用户的位置 并且在该用户自己导航后也只需要一次 locationManager LocationManager this getSystemService LOCATION SERVICE location locationManag
  • 如何在 Windows 7 上安装 Windows Phone 8 SDK

    我在 Windows 7 上设置了所有工作区和所有内容 但我也想开发 Windows Phone 8 但正如 Microsoft 网站所述 它无法安装在 Windows 7 上 有人知道如何在 Windows 7 上安装吗 我找到了一个破解
  • iOS Ionic 应用程序中的链接无法立即打开

    我的应用程序的视图之一中有一些链接 Sharing 添加到日历 打开外部链接 在我用来测试应用程序的 iPhone 上 1 和 2 可以工作 但只有当我按下主页按钮然后返回到应用程序时 才会出现共享 日历对话框 谁能建议什么可能导致这个 我
  • 使用对象类型的字符串名称在 C# 中进行类型转换

    我有以下代码 应该很容易理解 public class Foo public void FooHasAMethod Console WriteLine it is me foo public class Bar public Foo Foo
  • sh 按匹配的列名值分解 CSV 文件,同时保留标题

    我有一个目录 其中包含来自表导出的许多 CSV 文件 tblA csv A B C 1 1 1 1 2 2 2 2 2 3 3 3 tblB csv C D A 1 1 1 1 2 2 2 2 2 3 3 3 为了破坏文件我找到了这个脚本
  • 将 Map[String, Double] 转换为 java.util.Map[String, java.lang.Double]

    我认为我们可以依靠隐式转换来转换scala Double to java lang Double 所以我尝试了以下方法 import scala collection JavaConverters object Main extends A
  • 如何从我的 iPad 应用程序打开设置 (Objective-C) [重复]

    这个问题在这里已经有答案了 我尝试过使用 UIApplication sharedApplication openURL NSURL URLWithString prefs root General path Network 以及您在这里看
  • 从 JAR 中执行 python 文件

    我试图弄清楚如何引用 python 文件 以便我可以在 Java GUI Jar 中执行它 它需要是一个可移植的解决方案 因此使用绝对路径对我来说不起作用 我在下面列出了我的项目结构 并包含了我如何尝试执行 python 脚本的代码 我已经
  • 如何修复高图表中隐藏的数据标签?

    请看一下JSFIDDLE 此处 绿色条不显示任何值 我知道添加overflow none crop false将显示该值 但它超出了绘图区域 有时对于较大的数字 它与标题重叠 我想 仅 在条内获取绿色条值 而不是隐藏该值 对于内部的特定列
  • 淘汰打字稿扩展器

    有人可以发布一个在打字稿中扩展可观察值的示例吗 淘汰赛延长器 http knockoutjs com documentation extenders html 我从2013年3月6日开始使用这个版本的knockout d tshttps g
  • RabbitMQ SSL 与 Apring AMQP 1.4.3 连接

    我正在尝试通过 SSL 连接到 RabbitMQ 我已按照 此处 https www rabbitmq com ssl html 链接的 RabbitMQ SSL 文档进行操作 根据 RabbitMQ SSL 文档 由于已知漏洞 不建议使用
  • 验证输入字符串是有效的十进制数

    任何人都可以提供一种算法来检查输入字符串是否是正确形状和形式的十进制数 正确形状和形式的规则 最多两位小数 出于所有实际目的 最大数字是 99 999 999 99 整数部分可以使用空格 逗号或点作为组分隔符 小数部分可以使用逗号或点作为分
  • 使用 fgetcsv 将 Excel csv 导出到 php 文件

    我正在使用 Excel 2010 Professional Plus 创建 Excel 文件 稍后我尝试将其导出为 UTF 8 csv 文件 我通过将其另存为 CSV 符号分隔 抱歉 我不知道那里的确切措辞 但我没有英文版本 我担心它的翻译
  • 从 podspec 或 info.plist 检索 pod 版本到代码中

    我创建了自己的 pod 其中包含 podspec 文件 其中包含 s version 0 4 7 我希望以编程方式将其写入代码中 因此每当应用程序运行时 它都会将 pod 版本发送到服务器 另一个获取 pod 版本的地方是下面的 plist
  • Kafka Streams 2.1.1 类转换,同时刷新定时聚合以存储

    我正在尝试使用 kafka 流执行窗口聚合 并仅在某个会话窗口关闭后才发出结果 为了实现这一点 我使用了抑制功能 问题是我找不到一种方法来使这个简单的测试工作 因为当它尝试保持状态时 我得到一个类转换异常 因为它尝试将 Windowed 转
  • 为什么 fill_n() 不能与 vector.reserve() 一起使用?

    最近在学习标准库算法 有一个关于函数的问题fill n iter n val 该功能要求容器至少有n元素开始于iter 这是测试代码 Version 1 Error vector
  • 如何通过struts从一个jsp打开另一个jsp

    如何打开一个jsp来自另一个jsp通过Struts 例如 我有 2 个 JSP Page1 jsp 和 Page2 jsp 页面1 jsp不含任何表格 页面2 jsp包含一个表格 我需要一个链接页面1 jsp which 当点击时带我去页面
  • 使用sql数据库驱动程序

    最终用户 开发或生产 能否推荐一个最好使用 database sql 包的 Sql 驱动程序包 我对 Postgres ODBC MySql 可能还有其他东西 但对于大容量的东西 即不是 Sqlite 感兴趣 它们最好可以在 Windows