当前位置: 首页 > news >正文

Go学习第九天

使用sqlite3

package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql""github.com/jmoiron/sqlx"_ "github.com/mattn/go-sqlite3""log""time"
)var schema = `
CREATE TABLE person (first_name text,last_name text,email text
);CREATE TABLE place (country text,city text NULL,telcode integer
)`type Person struct {FirstName string `db:"first_name"`LastName  string `db:"last_name"`Email     string
}type Place struct {Country stringCity    sql.NullStringTelCode int
}func main() {// this Pings the database trying to connect// use sqlx.Open() for sql.Open() semantics//dsn := "user:password@tcp(127.0.0.1:3306)/go-study?charset=utf8&parseTime=True"//db, err := sqlx.Connect("mysql", dsn)db, err := sqlx.Connect("sqlite3", "__deleteme.db")if err != nil {log.Fatalln(err)}db.SetConnMaxLifetime(time.Second * 10)db.SetMaxOpenConns(20) // 设置与数据库建立连接的最大数目db.SetMaxIdleConns(10) // 设置连接池中的最大闲置连接数// exec the schema or fail; multi-statement Exec behavior varies between// database drivers;  pq will exec them all, sqlite3 won't, ymmvdb.MustExec(schema)tx := db.MustBegin()tx.MustExec("INSERT INTO person (first_name, last_name, email) VALUES ($1, $2, $3)", "Jason", "Moiron", "jmoiron@jmoiron.net")tx.MustExec("INSERT INTO person (first_name, last_name, email) VALUES ($1, $2, $3)", "John", "Doe", "johndoeDNE@gmail.net")tx.MustExec("INSERT INTO place (country, city, telcode) VALUES ($1, $2, $3)", "United States", "New York", "1")tx.MustExec("INSERT INTO place (country, telcode) VALUES ($1, $2)", "Hong Kong", "852")tx.MustExec("INSERT INTO place (country, telcode) VALUES ($1, $2)", "Singapore", "65")// Named queries can use structs, so if you have an existing struct (i.e. person := &Person{}) that you have populated, you can pass it in as &persontx.NamedExec("INSERT INTO person (first_name, last_name, email) VALUES (:first_name, :last_name, :email)", &Person{"Jane", "Citizen", "jane.citzen@example.com"})tx.Commit()// Query the database, storing results in a []Person (wrapped in []interface{})people := []Person{}db.Select(&people, "SELECT * FROM person ORDER BY first_name ASC")jason, john := people[0], people[1]fmt.Printf("%#v\n%#v", jason, john)// Person{FirstName:"Jason", LastName:"Moiron", Email:"jmoiron@jmoiron.net"}// Person{FirstName:"John", LastName:"Doe", Email:"johndoeDNE@gmail.net"}// You can also get a single result, a la QueryRowjason = Person{}err = db.Get(&jason, "SELECT * FROM person WHERE first_name=$1", "Jason")fmt.Printf("%#v\n", jason)// Person{FirstName:"Jason", LastName:"Moiron", Email:"jmoiron@jmoiron.net"}// if you have null fields and use SELECT *, you must use sql.Null* in your structplaces := []Place{}err = db.Select(&places, "SELECT * FROM place ORDER BY telcode ASC")if err != nil {fmt.Println(err)return}usa, singsing, honkers := places[0], places[1], places[2]fmt.Printf("%#v\n%#v\n%#v\n", usa, singsing, honkers)// Place{Country:"United States", City:sql.NullString{String:"New York", Valid:true}, TelCode:1}// Place{Country:"Singapore", City:sql.NullString{String:"", Valid:false}, TelCode:65}// Place{Country:"Hong Kong", City:sql.NullString{String:"", Valid:false}, TelCode:852}// Loop through rows using only one structplace := Place{}rows, err := db.Queryx("SELECT * FROM place")for rows.Next() {err := rows.StructScan(&place)if err != nil {log.Fatalln(err)}fmt.Printf("%#v\n", place)}// Place{Country:"United States", City:sql.NullString{String:"New York", Valid:true}, TelCode:1}// Place{Country:"Hong Kong", City:sql.NullString{String:"", Valid:false}, TelCode:852}// Place{Country:"Singapore", City:sql.NullString{String:"", Valid:false}, TelCode:65}// Named queries, using `:name` as the bindvar.  Automatic bindvar support// which takes into account the dbtype based on the driverName on sqlx.Open/Connect_, err = db.NamedExec(`INSERT INTO person (first_name,last_name,email) VALUES (:first,:last,:email)`,map[string]interface{}{"first": "Bin","last":  "Smuth","email": "bensmith@allblacks.nz",})// Selects Mr. Smith from the databaserows, err = db.NamedQuery(`SELECT * FROM person WHERE first_name=:fn`, map[string]interface{}{"fn": "Bin"})// Named queries can also use structs.  Their bind names follow the same rules// as the name -> db mapping, so struct fields are lowercased and the `db` tag// is taken into consideration.rows, err = db.NamedQuery(`SELECT * FROM person WHERE first_name=:first_name`, jason)// batch insert// batch insert with structspersonStructs := []Person{{FirstName: "Ardie", LastName: "Savea", Email: "asavea@ab.co.nz"},{FirstName: "Sonny Bill", LastName: "Williams", Email: "sbw@ab.co.nz"},{FirstName: "Ngani", LastName: "Laumape", Email: "nlaumape@ab.co.nz"},}_, err = db.NamedExec(`INSERT INTO person (first_name, last_name, email)VALUES (:first_name, :last_name, :email)`, personStructs)// batch insert with mapspersonMaps := []map[string]interface{}{{"first_name": "Ardie", "last_name": "Savea", "email": "asavea@ab.co.nz"},{"first_name": "Sonny Bill", "last_name": "Williams", "email": "sbw@ab.co.nz"},{"first_name": "Ngani", "last_name": "Laumape", "email": "nlaumape@ab.co.nz"},}_, err = db.NamedExec(`INSERT INTO person (first_name, last_name, email)VALUES (:first_name, :last_name, :email)`, personMaps)
}

相关文章:

Go学习第九天

使用sqlite3 package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql""github.com/jmoiron/sqlx"_ "github.com/mattn/go-sqlite3""log""time" )var schema CREATE TABLE perso…...

kafka集成篇

kafka的Java客户端 生产者 1.引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.6.3</version></dependency>2.生产者发送消息的基本实现 /*** 消息的发送⽅*/ …...

go-安装部署

一、安装go 详细安装方式可以查看官网 # 下载 wget https://golang.google.cn/dl/go1.21.0.linux-amd64.tar.gz # 解压缩 tar -xzf go1.21.0.linux-amd64.tar.gz # 迁移目录 mv go /usr/local # 配置环境变量 export PATH$PATH:/usr/local/go/bin # 检查go的版本 go version有…...

vue项目的实用性总结

1、mockjs 基本使用 ★ 安装&#xff1a;npm i mockjs。 在src/mock/index.js内容如下&#xff1a; import Mock from mockjs //制订拦截规则 Mock.mock(http://www.0313.com,get,你好啊)记得在main.js中引入一下&#xff0c;让其参与整个项目的运行。 只要发出去的是get类型…...

IOC容器

DI&#xff08;依赖注入&#xff09;&#xff1a;DI&#xff08;Dependency Injection&#xff09;是一种实现松耦合和可测试性的软件设计模式。它的核心思想是将依赖关系的创建与管理交给外部容器&#xff0c;使得对象之间只依赖于接口而不直接依赖于具体实现类。通过依赖注入…...

若依框架浅浅介绍

由若依官网所给介绍可知 1、文件结构介绍 在ruoyi-admin的pom.xml文件中引入了ruoyi-framework、ruoyi-quartz和ruoyi-generatior模块&#xff0c;在ruoyi-framework的pom.xml文件中引入了ruoyi-system模块。 2、技术栈介绍 前端&#xff1a;Vue、Element UI后端&#xff1a…...

echarts 柱状图-折线图-饼图的基础使用

上图示例图表展示相关配置&#xff1a; var myChart echarts.init(this.$refs.firstMain);myChart.setOption({legend: { // 图例设置top: "15%",type: "scroll",orient: "vertical",//图例列表的布局朝向。left: "right",pageIconCo…...

mac电脑 node 基本操作命令

1. 查看node的版本 node -v2. 查看可安装的node版本 sudo npm view node versions3. 安装指定版本的node sudo n 18.9.04. 安装最新版本node sudo n latest5. 安装最新稳定版 sudo n stable6. 清楚node缓存 sudo npm cache clean -f7. 列举已经安装的node版本 n ls 8. 在…...

Hlang社区项目说明

文章目录 前言Hlang社区技术前端后端 前言 Hello,欢迎来到本专栏&#xff0c;那么这也是第一次做这种类型的专栏&#xff0c;如有不做多多指教。那么在这里我要隆重介绍的就是这个Hlang这个项目。 首先&#xff0c;这里我要说明的是&#xff0c;我们的这个项目其实是分为两个…...

RTC实验

一、RTC简介 RTC(Real Time Clock)即实时时钟&#xff0c;它是一个可以为系统提供精确的时间基准的元器件&#xff0c;RTC一般采用精度较高的晶振作为时钟源&#xff0c;有些RTC为了在主电源掉电时还可以工作&#xff0c;需要外加电池供电BCD码&#xff0c;四位二进制表示一位…...

C#多线程报错:The destination thread no longer exists.

WinForm&#xff0c;C#多线程报错&#xff1a; System.ComponentModel.InvalidAsynchronousStateException: An error occurred invoking the method. The destination thread no longer exists. 研究一番&#xff0c;找到了原因&#xff1a; 有问题的写法&#xff1a; ne…...

使用 Visual Studio GoogleTest编写 C/C++ 单元测试——入门篇

入门教程 Visual Studio 新建 GoogleTest项目&#xff0c;一路选默认参数 pch.h #pragma once#include "gtest/gtest.h"int add(int a, int b);pch.cpp #include "pch.h"int add(int a, int b) {return a b; }test.cpp #include "pch.h"TES…...

Linux下TA_Lib安装失败的问题处理

Linux下TA_Lib安装失败的问题处理 TA_Lib是python的量化指标库&#xff0c;其中包含了很多150多种量化指标 &#xff0c;量化分析中经常使用。 This is a Python wrapper for TA-LIB based on Cython instead of SWIG. From the homepage: TA-Lib is widely used by trading …...

egg.js企业级web框架

egg与express、koa的区别 三者皆为node.js web框架&#xff0c;但&#xff1a; express适合做个人项目&#xff0c;灵活性太高&#xff1b;egg是基于koa封装的企业级框架&#xff0c;奉行约定优于配置&#xff0c;按照一套统一的约定进行应用开发&#xff0c;减少开发学习成本…...

小说网站第二章-关于文章的上传的实现

简述 因为最近比较忙&#xff0c;所以只有时间把以前的东西整理一下。前端方面&#xff0c;我使用了既存md5框架语法来保存数据&#xff0c;原谅我展示没找到好的方法。后端的话&#xff0c;我使用nodemongodb来保存数据。下面我就来简单介绍一下我的东西。 前端的实现 前端的…...

Java面试题01

1、以下不属于oracle的逻辑结构的是&#xff1f;答案&#xff1a;B A.段 B.数据文件 C.表空间 D.区 2、构造函数何时被调用&#xff1f;答案&#xff1a;A A.创建对象时 B.使用对象变量时 C.调用对象方法时 D.类定义时 3、下列排序…...

6.3 社会工程学攻击

数据参考&#xff1a;CISP官方 目录 社会工程学攻击概念社会工程学攻击利用的人性 “弱点”典型社会工程学攻击方式社会工程学攻击防护 一、社会工程学攻击概念 什么是社会工程学攻击 也被称为 "社交工程学" 攻击利用人性弱点 (本能反应、贪婪、易于信任等) 进…...

typeScript 之 Map

工具&#xff1a; PlayGround 源码&#xff1a; GitHub TypeScript Map简介 Map是ES6引入的一种新的数据结构&#xff0c; 它是一只用于存储**键值对(key-value)**的集合。 let map new Map(); let map_1: Map<string, number> new Map(); let map_2: Map<string…...

Apache Doris 入门教程29:文件管理器

文件管理器 Doris 中的一些功能需要使用一些用户自定义的文件。比如用于访问外部数据源的公钥、密钥文件、证书文件等等。文件管理器提供这样一个功能&#xff0c;能够让用户预先上传这些文件并保存在 Doris 系统中&#xff0c;然后可以在其他命令中引用或访问。 名词解释​ …...

【佳佳怪文献分享】MVFusion: 利用语义对齐的多视角 3D 物体检测雷达和相机融合

标题&#xff1a;MVFusion: Multi-View 3D Object Detection with Semantic-aligned Radar and Camera Fusion 作者&#xff1a;Zizhang Wu , Guilian Chen , Yuanzhu Gan , Lei Wang , Jian Pu 来源&#xff1a;2023 IEEE International Conference on Robotics and Automat…...

效率倍增:用快马平台一键生成极客日报推荐的高效开发工具与脚本

最近在极客日报上看到不少提升开发效率的小技巧&#xff0c;比如用Prettier统一代码风格、配置Git Hooks自动化检查等等。但每次看完想实践时&#xff0c;总得花时间查文档、写配置&#xff0c;挺麻烦的。于是我用InsCode(快马)平台做了个工具生成器&#xff0c;能直接把日报里…...

网盘下载加速工具LinkSwift:八大主流网盘直链下载解决方案

网盘下载加速工具LinkSwift&#xff1a;八大主流网盘直链下载解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...

通过信道优化数据传输的通信链路的实现附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…...

Windows Cleaner:开源磁盘清理工具的全方位解决方案

Windows Cleaner&#xff1a;开源磁盘清理工具的全方位解决方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 在数字工作环境中&#xff0c;磁盘空间不足已成为…...

闽北哥-一个人最顶级的能力:复归于朴

一个人最顶级的能力 ——复归于朴**“道家说‘复归于朴’&#xff0c; 儒家说‘赤子之心’&#xff0c; 佛家说‘本自具足’&#xff0c; 鬼谷子说‘知世故而不世故’—— 他们都指向同一种状态&#xff1a; 在红尘中&#xff0c;活出婴儿般的清澈。”&#x1f33f; 这不是天真…...

HarmonyOS6 半年磨一剑 - RcCheckbox 组件核心架构与类型系统设计

文章目录前言一、组件整体架构1.1 双组件协作设计1.2 文件结构1.3 装饰器分工二、类型系统深度解析2.1 值类型的宽泛设计2.2 选项配置接口2.3 形状与尺寸类型三、核心参数体系3.1 RcCheckbox 参数全览3.2 RcCheckboxGroup 扩展参数四、内部状态设计4.1 受控模式的双状态机制4.2…...

C# Random.Next() vs NextDouble():不同场景下的随机数生成指南

C# Random.Next() vs NextDouble()&#xff1a;不同场景下的随机数生成指南 在游戏开发、模拟实验、密码学等众多领域&#xff0c;随机数生成都是不可或缺的核心功能。C#开发者通常第一时间想到的就是System.Random类&#xff0c;但你是否真正了解Next()和NextDouble()这些方法…...

解决Word中MathType功能失效的VBA与注册表修复指南

1. 遇到MathType罢工&#xff1f;先别急着重装Office 最近帮同事处理Word文档时&#xff0c;发现他的MathType菜单全灰了&#xff0c;公式编辑功能完全瘫痪。这种情况在科研论文写作高峰期特别要命——你正赶着投稿 deadline&#xff0c;突然发现公式编辑器失灵了&#xff0c;…...

从原型到实战:基于快马生成代码快速开发可用的worldmonitor疫情监控系统

从原型到实战&#xff1a;基于快马生成代码快速开发可用的worldmonitor疫情监控系统 最近在做一个全球疫情数据监控系统的项目&#xff0c;正好用到了InsCode(快马)平台来快速生成基础代码&#xff0c;然后在这个基础上进行二次开发。整个过程非常顺畅&#xff0c;特别是平台的…...

OpenAPI状态机建模指南:用有限状态机设计RESTful API的终极方法 [特殊字符]

OpenAPI状态机建模指南&#xff1a;用有限状态机设计RESTful API的终极方法 &#x1f680; 【免费下载链接】OpenAPI-Specification The OpenAPI Specification Repository 项目地址: https://gitcode.com/gh_mirrors/op/OpenAPI-Specification OpenAPI Specification 是…...