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

动手写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, _ 
http://www.lryc.cn/news/534176.html

相关文章:

  • 绘制中国平安股价的交互式 K 线图
  • [渗透测试]热门搜索引擎推荐— — shodan篇
  • JavaScript 在 VSCode 中的优势与应用
  • 深度学习之StyleGAN算法解析
  • 数据结构之排序
  • Vue.js 与第三方插件的集成
  • 基于Docker搭建ES集群,并设置冷热数据节点
  • MyBatis常见知识点
  • Redis --- 使用GEO实现经纬度距离计算
  • 【0403】Postgres内核 检查(procArray )给定 db 是否有其他 backend process 正在运行
  • [数据结构] Set的使用与注意事项
  • amis组件crud使用踩坑
  • 离线统信系统的python第三方库批量安装流程
  • 韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系
  • 神经网络|(九)概率论基础知识-泊松分布及python仿真
  • 114,【6】攻防世界 web wzsc_文件上传
  • 【Kubernetes的SpringCloud最佳实践】有Service是否还需要Eureka?
  • SQL最佳实践(笔记)
  • vue3学习四
  • C# LiteDB 使用教程
  • Python Pandas(3):DataFrame
  • 使用通义灵码 ai编程 来提高开发效率
  • 【OpenCV】入门教学
  • 大数据项目4:基于spark的智慧交通项目设计与实现
  • netcore openTelemetry+prometheus+grafana
  • Spring Boot接入Deep Seek的API
  • Git、Github和Gitee完整讲解:丛基础到进阶功能
  • MyBatis的工作流程是怎样的?
  • Maven 安装配置(完整教程)
  • 分享如何通过Mq、Redis、XxlJob实现算法任务的异步解耦调度