当前位置: 首页 > 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…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...