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

动手写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
User

sqlite> .schema User
CREATE TABLE User(Name text, Age integer);

SQLite 的使用暂时介绍这么多,了解了以上使用方法已经足够我们完成今天的任务了。如果想了解更多用法,可参考 SQLite 常用命令。

2 database/sql 标准库

Go 语言提供了标准库 database/sql 用于和数据库的交互,接下来我们写一个 Demo,看一看这个库的用法。

package main

import (
	"database/sql"
	"log"
	
	_ "github.com/mattn/go-sqlite3"
)

func main() {
   
	db, _ 

http://www.kler.cn/a/537674.html

相关文章:

  • 网络安全ITP是什么 网络安全产品ips
  • Kafka 入门与实战
  • C# Mutex 锁 使用详解
  • idea 找不到或者无法加载主类
  • 《深度揭秘LDA:开启人工智能降维与分类优化的大门》
  • PostgreSql 函数异常处理
  • IDEA查看项目依赖包及其版本
  • AIGC-微头条爆款文案创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)
  • 2025.2.8总结
  • 使用Postman创建Mock Server
  • .NET周刊【1月第4期 2025-01-26】
  • Matplotlib基础01( 基本绘图函数/多图布局/图形嵌套/绘图属性)
  • [渗透测试]热门搜索引擎推荐— — shodan篇
  • 本地缓存 Caffeine 中的时间轮(TimeWheel)是什么?
  • 机器学习之心的创作纪念日
  • move_base全局路径规划震荡之参数调优
  • Spring Boot常见面试题总结
  • SVN 提交与原有文件类型不一样的文件时的操作
  • [权限提升] Linux 提权 维持 — 系统错误配置提权 - PATH 环境变量劫持提权
  • 使用 C++20 Modules 导入 Boost 模块的方法
  • GO、GSEA富集分析一网打进
  • pptx 提取 ppt 内容
  • DNS域名服务器的安装及配置
  • AI知识库和全文检索的区别
  • 关系代数、笛卡尔积、投影选择、自然连接(高软15)
  • 济南软件检测机构有哪些?山东省做软件测试找哪些机构?