动手写ORM框架 - GeeORM第一天 database/sql 基础
文章目录
- 1 初识 SQLite
- 2 database/sql 标准库
- 3 实现一个简单的 log 库
- 4 核心结构 Session
本文是7天用Go从零实现ORM框架GeeORM的第一篇。介绍了
- SQLite 的基础操作(连接数据库,创建表、增删记录等)。
- 使用 Go 语言标准库 database/sql 连接并操作 SQLite 数据库,并简单封装。
代码约150行
1 初识 SQLite
SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.
- SQLite 官网
SQLite 是一款轻量级的,遵守 ACID 事务原则的关系型数据库。SQLite 可以直接嵌入到代码中,不需要像 MySQL、PostgreSQL 需要启动独立的服务才能使用。SQLite 将数据存储在单一的磁盘文件中,使用起来非常方便。也非常适合初学者用来学习关系型数据的使用。GeeORM 的所有的开发和测试均基于 SQLite。
在 Ubuntu 上,安装 SQLite 只需要一行命令,无需配置即可使用。
apt-get install sqlite3
接下来,连接数据库(gee.db),如若 gee.db 不存在,则会新建。如果连接成功,就进入到了 SQLite 的命令行模式,执行 .help 可以看到所有的帮助命令。
> sqlite3 gee.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite>
使用 SQL 语句新建一张表 User,包含两个字段,字符串 Name 和 整型 Age。
sqlite> CREATE TABLE User(Name text, Age integer);
插入两条数据
sqlite> INSERT INTO User(Name, Age) VALUES ("Tom", 18), ("Jack", 25);
执行简单的查询操作,在执行之前使用 .head on 打开显示列名的开关,这样查询结果看上去更直观。
sqlite> .head on# 查找 `Age > 20` 的记录;
sqlite> SELECT * FROM User WHERE Age > 20;
Name|Age
Jack|25# 统计记录个数。
sqlite> SELECT COUNT(*) FROM User;
COUNT(*)
2
使用 .table 查看当前数据库中所有的表(table),执行.schema <table> 查看建表的 SQL 语句。
sqlite> .table
Usersqlite> .schema User
CREATE TABLE User(Name text, Age integer);
SQLite 的使用暂时介绍这么多,了解了以上使用方法已经足够我们完成今天的任务了。如果想了解更多用法,可参考 SQLite 常用命令。
2 database/sql 标准库
Go 语言提供了标准库 database/sql 用于和数据库的交互,接下来我们写一个 Demo,看一看这个库的用法。
package mainimport ("database/sql""log"_ "github.com/mattn/go-sqlite3"
)func main() {db, _ 相关文章:
动手写ORM框架 - GeeORM第一天 database/sql 基础
文章目录 1 初识 SQLite2 database/sql 标准库3 实现一个简单的 log 库4 核心结构 Session本文是7天用Go从零实现ORM框架GeeORM的第一篇。介绍了 SQLite 的基础操作(连接数据库,创建表、增删记录等)。使用 Go 语言标准库 database/sql 连接并操作 SQLite 数据库,并简单封装…...
绘制中国平安股价的交互式 K 线图
在本文中,探索如何使用 Python 的强大库进行股市数据分析与可视化。我们将以中国平安(股票代码:sh601318)为例,展示如何获取其股票数据,并绘制一张交互式 K 线图。 K 线图是股市分析中不可或缺的工具,它能够直观地显示股票的波动情况,包括开盘价、收盘价、最高价和最低…...
[渗透测试]热门搜索引擎推荐— — shodan篇
[渗透测试]热门搜索引擎推荐— — shodan篇 免责声明:本文仅用于分享渗透测试工具,大家使用时,一定需要遵守相关法律法规。 除了shodan,还有很多其他热门的,比如:fofa、奇安信的鹰图、钟馗之眼等࿰…...
JavaScript 在 VSCode 中的优势与应用
JavaScript 在 VSCode 中的优势与应用 引言 随着前端技术的发展,JavaScript 已经成为了网页开发中最流行的编程语言之一。Visual Studio Code(简称 VSCode)作为一款轻量级、可扩展的代码编辑器,因其强大的功能和良好的用户体验,深受广大开发者的喜爱。本文将探讨 JavaSc…...
深度学习之StyleGAN算法解析
StyleGAN 算法解析及详细介绍 1. StyleGAN 算法由来 StyleGAN(Style-Based Generative Adversarial Network)是 NVIDIA 于 2018 年 提出的 高质量图像生成算法,由 Tero Karras 等人在论文 《A Style-Based Generator Architecture for Generative Adversarial Networks》 …...
数据结构之排序
排序 参考链接: https://zq99299.github.io/dsalg-tutorial/dsalg-java-hsp/07/09.html#%E7%AE%80%E5%8D%95%E4%BB%8B%E7%BB%8D 基数排序 计数排序 https://www.hello-algo.com/chapter_sorting/counting_sort/...
Vue.js 与第三方插件的集成
Vue.js 与第三方插件的集成 今天我们来聊聊如何在 Vue 项目中集成第三方插件。随着项目功能不断增多,我们常常需要引入各种第三方库和插件,比如国际化、图表、日期处理等,来提升开发效率和用户体验。下面就跟大家分享一下集成第三方插件的常…...
基于Docker搭建ES集群,并设置冷热数据节点
1.背景 存在三台服务器分别是 192.168.2.91(master节点、data-content节点、data-hot节点)、192.168.2.92(data-cold节点、ingest节点)、192.168.2.93(master节点、data-content节点、data-hot节点) 冷热数据分离搭建教程 2.搭建91节点 热数据节点 (1࿰…...
MyBatis常见知识点
#{} 和 ${} 的区别是什么? 答: ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于原样文本替换,可以替换任意内容,比如${driver}会被原样替换为com.mysql.jdbc. Driver。 一个…...
Redis --- 使用GEO实现经纬度距离计算
什么是GEO? Spring Boot 项目中可以通过 Spring Data Redis 来使用 Redis GEO 功能,主要通过 RedisTemplate 和 GeoOperations 接口来操作地理位置数据。 Service public class GeoService {Autowiredprivate RedisTemplate<String, Object> red…...
【0403】Postgres内核 检查(procArray )给定 db 是否有其他 backend process 正在运行
文章目录 1. 给定 db 是否有其他 backend 正在运行1.1 获取 allPgXact[] 索引1.1.1 MyProc 中 databaseId 初始化实现1.2 allProcs[] 中各 databaseId 判断1. 给定 db 是否有其他 backend 正在运行 CREATE DATABASE 语句创建用户指定 数据库名(database-name)时候, 会通过 …...
[数据结构] Set的使用与注意事项
目录 Set的说明 常见方法说明 注意事项 TreeSet使用案例 Set的说明 Set与Map主要的不同有两点: Set是继承自Collection的接口类,Set中只存储了Key. 常见方法说明 方法解释boolean add(E e)添加元素,但重复元素不会被添加成功void clear()清空集合boolean contains(Object…...
amis组件crud使用踩坑
crud注意 过滤条件参数同步地址栏 默认 CRUD 会将过滤条件参数同步至浏览器地址栏中,比如搜索条件、当前页数,这也做的目的是刷新页面的时候还能进入之前的分页。 但也会导致地址栏中的参数数据合并到顶层的数据链中,例如:自动…...
离线统信系统的python第三方库批量安装流程
一、关于UOS本机 操作系统:UOS(基于Debian的Linux发行版) CPU:海光x86 二、具体步骤 1、在联网的电脑上用控制台的pip命令批量下载指定版本的第三方库 方法A cd <目标位置的绝对路径> pip download -d . --platform many…...
韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系
韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系 在当今这个科技日新月异的时代,企业之间的竞争早已超越了单纯的产品质量比拼,**售后服务成为了衡量消费电子行业各品牌实力与客户满意度的关键一环。**深圳市韶音…...
神经网络|(九)概率论基础知识-泊松分布及python仿真
【1】引言 在前序学习进程中,我们已经知晓二项分布是多重伯努利分布,二伯努利分布对应的是可以无限重复、结果只有两种可能的随机试验。 相关文章链接为: 神经网络|(八)概率论基础知识-二项分布及python仿真-CSDN博客 上述文章还调用nump…...
114,【6】攻防世界 web wzsc_文件上传
进入靶场 传个桌面有的 直接空白了 我们 访问一下上传的东西 /index 没显示用于解析的.htaccess和.user.ini 文件,还两个都不显示 .htaccess 和 .user.ini 文件分别用于 Apache 服务器和 PHP-FPM 环境的目录级配置 但上传的时候bp查看状态码是200,…...
【Kubernetes的SpringCloud最佳实践】有Service是否还需要Eureka?
在 Kubernetes 中部署 Spring Cloud 微服务时,是否还需要 Eureka 取决于具体场景和架构设计。以下是详细的实践建议和结论: 1. Kubernetes 原生服务发现 vs Eureka Kubernetes 自身提供了完善的服务发现机制(通过 Service 资源)&…...
SQL最佳实践(笔记)
写在前面: 之前baeldung的Java Weekly Reviews里面推荐了一篇关于SQL优化的文章,正好最近在学习数据库相关知识,记一些学习笔记 原文地址:SQL Best Practices Every Java Engineer Must Know 1. 使用索引 使用索引…...
vue3学习四
七 标签ref属性 设置标签ref属性,类似于设置标签id。 普通标签 <template name"test4"> <p ref"title" id"title" click"showinfo">VIEW4</p> <View3/><script lang"ts" setup>…...
工艺智能如何让汽车涂装质量更稳、成本更低?
一辆汽车的车身涂层究竟需要经历怎样的极限挑战?从出厂时如镜面般的光泽,到在十年风雨中抵御紫外线、酸雨和砂石的侵蚀,涂装工艺正是赋予汽车这幅铠甲的关键。然而,在过去,这道工序高度依赖老师傅的经验,面…...
MySQL解析器的性能优化:从理论到实践
MySQL解析器的性能优化:从理论到实践 引言 作为一名在数据深渊里捞了十几年 Bug 的女码农,我见过太多因为解析器性能问题导致的数据库瓶颈。在 MySQL 数据库中,解析器的性能直接影响 SQL 语句的处理速度和系统的整体性能。今天,我…...
弹幕盒子:5分钟掌握专业弹幕制作,零基础也能轻松上手
弹幕盒子:5分钟掌握专业弹幕制作,零基础也能轻松上手 【免费下载链接】danmubox.github.io 弹幕盒子 项目地址: https://gitcode.com/gh_mirrors/da/danmubox.github.io 你是否曾为视频制作寻找合适的弹幕工具而烦恼?想要给视频添加互…...
告别复杂安装:用快马AI一键生成opencode可运行原型
最近在折腾一个开源项目时,被各种依赖安装和环境配置搞得头大。作为一个经常需要快速验证想法的开发者,我一直在寻找能跳过这些繁琐步骤的工具。直到发现了InsCode(快马)平台,它彻底改变了我的开发流程。 传统安装的痛点 以前要运行一个openc…...
VS Code 通义灵码:从安装到实战编码的全方位指南
1. 通义灵码:你的AI编程助手 第一次听说通义灵码时,我正在为一个Python项目焦头烂额。那是一个需要处理大量数据清洗的脚本,我写了半天还是觉得效率太低。同事随口说了句"试试通义灵码吧",没想到这个决定让我少加了三天…...
2021热门电子制作项目解析与实战指南
1. 电子制作项目概述今天想和大家分享几个来自New Top 3 Electronic Projects 2021的趣味电子制作项目。这些项目不仅电路设计巧妙,而且视觉效果惊艳,完美诠释了"电路与艺术结合"的理念。作为一名电子爱好者,我特别喜欢这类既有技术…...
别再混淆了!一文搞懂目标检测中的AP、mAP和mAP@0.5:0.95区别
目标检测评估指标全解析:从AP到mAP0.5:0.95的实战指南 在计算机视觉领域,目标检测模型的性能评估一直是研究者关注的焦点。面对AP、mAP、mAP0.5:0.95等专业术语,不少开发者容易混淆它们的计算方式和适用场景。本文将深入剖析这些关键指标的技…...
[实战] 从点云到避障:FIESTA ESDF实时构建全解析
1. 为什么需要实时ESDF构建 当机器人需要在复杂环境中自主移动时,避障是最基础也最关键的能力。想象一下你在黑暗中摸索前行,手碰到墙壁就立即缩回——机器人也需要类似的"触觉"。欧氏距离场(ESDF)就是机器人的三维空间…...
寻音捉影·侠客行企业实操案例:法务取证场景下千条采访音频线索挖掘
寻音捉影侠客行企业实操案例:法务取证场景下千条采访音频线索挖掘 1. 引言:音频线索挖掘的法务挑战 在法律取证工作中,经常需要处理大量的采访录音。想象一下这样的场景:一个商业纠纷案件,涉及数十个当事人的访谈录音…...
MMC模块化多电平换流器Simulink仿真模型:N=10子模块的载波移相调制与多控制策略应用
MMC模块化多电平换流器,MMC-HVDC直流输电系统,单个桥臂N10个子模块,采用载波移相调制 simulink仿真模型。 为了测试控制性能良好,在1s时,额定有功功率10e6增加到15e6。 子模块电压2000V,直流电压20KV。 定有…...
