范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

GO语言(三十)访问关系型数据库(上)

  本教程介绍了使用 Godatabase/sql及其标准库中的包访问关系数据库的基础知识。
  您将使用的database/sql包包括用于连接数据库、执行事务、取消正在进行的操作等的类型和函数。
  在本教程中,您将创建一个数据库,然后编写代码来访问该数据库。您的示例项目将是有关老式爵士乐唱片的数据存储库。
  先决条件MySQL 关系数据库管理系统 (DBMS)的安装。 Go 的安装。 用于编辑代码的工具。 您拥有的任何文本编辑器都可以正常工作。 一个命令终端。 Go 在 Linux 和 Mac 上的任何终端以及 Windows 中的 PowerShell 或 cmd 上都能很好地工作。
  为您的代码创建一个文件夹
  首先,为您要编写的代码创建一个文件夹。
  1、打开命令提示符并切换到您的主目录。
  在 Linux 或 Mac 上: $ cd
  在 Windows 上: C:> cd %HOMEPATH%
  2、在命令提示符下,为您的代码创建一个名为 data-access 的目录。 $ mkdir data-access $ cd data-access
  3、创建一个模块,您可以在其中管理将在本教程中添加的依赖项。
  运行go mod init命令,为其提供新代码的模块路径。 $ go mod init example/data-access go: creating new go.mod: module example/data-access
  此命令创建一个 go.mod 文件,您添加的依赖项将在其中列出以供跟踪。
  注意: 在实际开发中,您会指定一个更符合您自己需求的模块路径。有关更多信息,请参阅一下文章。
  GO语言(二十五):管理依赖项(上)
  GO语言(二十六):管理依赖项(中)
  GO语言(二十七):管理依赖项(下)
  接下来,您将创建一个数据库。
  设置数据库
  在此步骤中,您将创建要使用的数据库。您将使用 DBMS 本身的 CLI 创建数据库和表,以及添加数据。
  您将创建一个数据库,其中包含有关黑胶唱片上的老式爵士乐录音的数据。
  这里的代码使用MySQL CLI,但大多数 DBMS 都有自己的 CLI,具有类似的功能。
  1、打开一个新的命令提示符。
  在命令行,登录到您的 DBMS,如下面的 MySQL 示例所示。 $ mysql -u root -p Enter password:  mysql>
  2、在mysql命令提示符下,创建一个数据库。 mysql> create database recordings;
  3、切到您刚刚创建的数据库,以便您可以添加表。 mysql> use recordings; Database changed
  4、在文本编辑器的 data-access 文件夹中,创建一个名为 create-tables.sql 的文件来保存用于添加表的 SQL 脚本。
  将以下 SQL 代码粘贴到文件中,然后保存文件。 DROP TABLE IF EXISTS album; CREATE TABLE album (   id         INT AUTO_INCREMENT NOT NULL,   title      VARCHAR(128) NOT NULL,   artist     VARCHAR(255) NOT NULL,   price      DECIMAL(5,2) NOT NULL,   PRIMARY KEY (`id`) );  INSERT INTO album   (title, artist, price) VALUES   ("Blue Train", "John Coltrane", 56.99),   ("Giant Steps", "John Coltrane", 63.99),   ("Jeru", "Gerry Mulligan", 17.99),   ("Sarah Vaughan", "Sarah Vaughan", 34.98);
  在此 SQL 代码中:
  (1)删除名为album表。 首先执行此命令可以让您更轻松地稍后重新运行脚本。
  (2)创建一个album包含四列的表:title、artist和price。每行的id值由 DBMS 自动创建。
  (3)添加带有值的四行。
  5、在mysql命令提示符下,运行您刚刚创建的脚本。
  您将使用以下形式的source命令: mysql> source /path/to/create-tables.sql
  6、在 DBMS 命令提示符处,使用SELECT语句来验证您是否已成功创建包含数据的表。 mysql> select * from album; +----+---------------+----------------+-------+ | id | title         | artist         | price | +----+---------------+----------------+-------+ |  1 | Blue Train    | John Coltrane  | 56.99 | |  2 | Giant Steps   | John Coltrane  | 63.99 | |  3 | Jeru          | Gerry Mulligan | 17.99 | |  4 | Sarah Vaughan | Sarah Vaughan  | 34.98 | +----+---------------+----------------+-------+ 4 rows in set (0.00 sec)
  接下来,您将编写一些 Go 代码进行连接,以便进行查询。
  查找并导入数据库驱动程序
  现在你已经有了一个包含一些数据的数据库,开始你的 Go 代码。
  找到并导入一个数据库驱动程序,该驱动程序会将您通过database/sql包中的函数发出的请求转换为数据库可以理解的请求。
  1、在您的浏览器中,访问SQLDrivers wiki 页面以识别您可以使用的驱动程序。
  2、使用页面上的列表来识别您将使用的驱动程序。为了在本教程中访问 MySQL,您将使用 Go-MySQL-Driver。
  3、请注意驱动程序的包名称 - 此处为github.com/go-sql-driver/mysql.
  4、使用您的文本编辑器,创建一个用于编写 Go 代码的文件,并将该文件作为 main.go 保存在您之前创建的数据访问目录中。
  5、进入main.go,粘贴以下代码导入驱动包。 package main  import "github.com/go-sql-driver/mysql"
  在此代码中:
  (1)将您的代码添加到main包中,以便您可以独立执行它。
  (2)导入 MySQL 驱动程序github.com/go-sql-driver/mysql。
  导入驱动程序后,您将开始编写代码以访问数据库。
  获取数据库句柄并连接
  现在编写一些 Go 代码,让您使用数据库句柄访问数据库。
  您将使用指向结构的指针sql.DB,它表示对特定数据库的访问。
  编写代码
  1、进入 main.go,在import您刚刚添加的代码下方,粘贴以下 Go 代码以创建数据库句柄。 var db *sql.DB  func main() {     // Capture connection properties.     cfg := mysql.Config{         User:   os.Getenv("DBUSER"),         Passwd: os.Getenv("DBPASS"),         Net:    "tcp",         Addr:   "127.0.0.1:3306",         DBName: "recordings",     }     // Get a database handle.     var err error     db, err = sql.Open("mysql", cfg.FormatDSN())     if err != nil {         log.Fatal(err)     }      pingErr := db.Ping()     if pingErr != nil {         log.Fatal(pingErr)     }     fmt.Println("Connected!") }
  在此代码中:
  (1)声明一个db类型的变量*sql.DB。这是您的数据库句柄。
  (2)声明db一个全局变量可以简化这个例子。在生产环境中,您会避免使用全局变量,例如将变量传递给需要它的函数或将其包装在结构中。
  (3)使用 MySQL 驱动程序Config和FormatDSN类型以收集连接属性并将它们格式化为连接字符串的 DSN。
  该Config结构使代码比连接字符串更容易阅读。
  (4)调用sql.Open 初始化db变量,传递 FormatDSN。
  (5)检查来自 的错误sql.Open。例如,如果您的数据库连接细节格式不正确,它可能会失败。
  为了简化代码,您调用log.Fatal结束执行并将错误打印到控制台。在生产代码中,您会希望以更优雅的方式处理错误。
  (6)调用DB.Ping以确认连接到数据库有效。在运行时, sql.Open可能不会立即连接,具体取决于驱动程序。您在Ping此处使用以确认 database/sql包可以在需要时连接。
  (7)检查来自Ping的错误,以防连接失败。
  (8)Ping如果连接成功,则打印一条消息。
  2、在 main.go 文件的顶部附近,就在包声明的下方,导入支持刚编写的代码所需的包。
  文件的顶部现在应该如下所示: package main  import (     "database/sql"     "fmt"     "log"     "os"      "github.com/go-sql-driver/mysql" )
  3、保存 main.go。
  运行代码
  1、开始跟踪 MySQL 驱动程序模块作为依赖项。
  使用go get 添加 github.com/go-sql-driver/mysql 模块作为您自己模块的依赖项。使用点参数表示"获取当前目录中代码的依赖项"。 $ go get . go get: added github.com/go-sql-driver/mysql v1.6.0
  Go 下载了此依赖项,因为您在上一步中将其添加到了import 声明中。
  2、在命令提示符下,设置Go 程序使用的DBUSER和DBPASS环境变量。
  在 Linux 或 Mac 上: $ export DBUSER=username $ export DBPASS=password
  在 Windows 上: C:Usersyoudata-access> set DBUSER=username C:Usersyoudata-access> set DBPASS=password
  3、在包含 main.go 的目录中的命令行中,通过键入go run来运行代码。 $ go run . Connected!
  连接成功了!
  接下来,您将查询一些数据。

戴森推出DysonZone耳机,戴在头上的空气净化器IT之家3月30日消息,戴森今日宣布推出一款耳机,名为DysonZone,你可以理解为头戴式耳机空气净化器的二合一产品,官方给它的定义则是空气净化耳机。这款耳机支持主动降噪,内置戴启奥科技进北交所上市辅导期输血信息化企业拥有242项软件著作权挖贝网3月30日,新三板创新层公司启奥科技(831287)进入北交所上市辅导期,辅导机构为财达证券。3月22日,启奥科技与财达证券签订了北交所上市辅导协议,同日向河北证监局报送了辅爆款HiFi监听耳机飞利浦SHP9500特价419元如果你的预算有限,又想体验一下HiFi音质的话,那这款飞利浦(PHILIPS)SHP9500绝对是你进入HiFi世界的不二之选。SHP9500以极高的性价比一直在烧友们心中享有盛名等等党终究还是赢了!小米11Ultra限时降1500相机再次进化近期又有不少新机发布了,诸如RedmiK50系列,当然还有一个K40S突然冒出来有点让人措手不及,当然其他手机厂商也有很多好的手机,一些已经发布了,还有一些还在路上,总体来说,今年新能源物流车或迎爆发前夜2025年将突破200万辆?21世纪经济报道记者彭苏平上海报道新能源汽车开始在各个细分市场落地开花。来自电车资源的数据显示,2021年中国新能源物流车销量为13。12万辆,是2020年总销量58045辆的2。中国电信推出星卡随心版用户可随需订购新海南客户端南海网南国都市报3月30日消息(记者任桐)近期,中国电信推出满足个性化需求的星卡随心版,让用户可以在不同需求场景下,打破套餐思维,自由选择组合,随需订购。每个月总有流量对话零跑汽车当下仍需聚焦单车智能车路协同是一个锦上添花的过程,有这个东西可以大大改进单车智能上的一些容错能力,错误概率会大大降低,零跑汽车智能驾驶产品线总监王耀农在谈到智能驾驶路线时这样说道。经过长期的发展,智能阿里腾讯支付互联互通再进一步淘宝小范围开启微信支付内测(马秋月文)3月30日消息,继阿里旗下饿了么优酷等应用接入微信支付后,近日淘宝正针对小范围内开启对微信支付功能的内测,并在支付选项中新增了与微信支付相关的两种支付模式,分别是微信扫数据结构与算法手撕平衡二叉树平衡二叉树定义动机二叉查找树的操作实践复杂度由树高度决定,所以希望控制树高,左右子树尽可能平衡。平衡二叉树(AVL树)称一棵二叉查找树为高度平衡树,当且仅当或由单一外结点组成,或由比缺芯还严重!超90大陆市场被美企垄断,该警惕了当今电子产业的高速发展让人们的视线都集中在半导体产业上,尤其是自从华为的芯片由于芯片规则被修改而断供后,芯片问题更是国内热烈讨论的问题,引起了国家以及相关企业的重视。这一次华为的事神州控股2021年营收205。39亿港元,大数据产品收入增长1023月30日晚间,神州数码控股有限公司(简称神州控股股票代码00861。HK)发布了2021年度报告。报告显示,公司2021年营收205。39亿港元,归母净利润(扣除股份支付费用及少
直播带货在互联网的灵魂三拷问直播电商给互联网带来了质的提升,根据淘宝2018年的数据,当初的主播只有几千人,而在2020年3月淘宝合作的主播达到100万,短短两年时间,从人数4位数到7位数。当然有人会说,这1取消校外培训机构,下一个造富行业来临据统计仅2020年我国就增加了52万家校外培训机构,而且在资本的加持下,校外培训互联网,线上教育形成了标准化,高效率的模式,成为了资本的赚钱工具。为了获取市场占有率,在线教育机构开刘强东不再担任京东法人,现由徐雷京东法人2020年4月2日,京东法人变更为徐雷,刘强东不再担任北京京东世纪贸易有限公司。许多网友纷纷表示京东更换法人是否代表京东要变天了,去年马云离开阿里巴巴,今年刘强东也一样,那是不是未今日高考,互联网职业会不会影响部分学子的人生呢?今日是全国高考的第一天,莘莘学子在这两天验收学习成果,也会有大部分人因为这次高考影响一生。近日,教育部发出严格核查2020届高校毕业生就业数据的通知,首次把互联网职业列入就业率,表互联网兼职去哪里找靠谱的平台?招聘网前程无忧58同城赶集网拉勾网等等招聘一些副业比如网店美工网络运营客服类型较多,一般是由企业发布招聘互联网兼职,有部分需要偶尔去公司报道有些是在家上班也行,有些是按量来计算收入强大影像黑科技收获无数好评,钜惠来袭华为nova9手机等你来解锁华为近几年的发展非常的迅速,旗下的产品也是款款经典。今天我们要说的就是华为最近新推出了鸿蒙影像旗舰手机华为nova9系列手机。这款手机凭借着强大的影像能力和智能黑科技收获了无数好评三千元档位的手机选哪一款?横向对比三款机型,帮你好中选优前些天表哥找我推荐3000元左右档位的手机,要求是有性价比,还要有品质,我搜罗了多款机型,然后选定三款比较有性价比的机型进行横向对比,最终我的推荐是realme真我GT大师探索版。同是新生手机品牌,Realme真我新品力压iQOO成为全面真香机realme真我GT大师探索版是刚发布不久的一款新品,经过多天的研究和分析,发现它真的很能打。这样的影像水平用在realme真我是大家原先想不到的,因为realme真我是主打性价比高通骁龙778G处理器手机怎么选?realmeQ3s和iQOOZ5都可以考虑小米发布了新的系列手机小米Civi,这款手机搭载高通骁龙778G处理器,这款芯片由荣耀50系列在6月份首发,沉寂了一段时间以后,近期又越来越多的手机厂商使用这款芯片。骁龙778G是荣耀亲选博皓冲牙器守护牙齿健康,功能丰富,人性化十足随着我国实现全面建成小康社会,人们的生活水平得到极大的提升,温饱已经不再是问题,生活饮食的营养也完全足够,在这样的背景之下,人们开始寻求健康的生活,其中就有牙齿的健康。牙齿健康是个2003年到2006年,其中这四款手机你认识吗?其中有索尼爱立信手机18年前,也就是2003年,那些年往事已经随风而去,2003年我只有23岁,我18岁的时候就已经参加工作了,那个时候是1998年。2003年到2008年的时候,手机都很贵。我只能买