Golang使用XORM(SQLite)

  • 前言
  • 安装SQLite
  • SQLite简单使用
    • 创建数据库
    • 查看数据库
    • 创建表
    • 查看表
    • 创建表记录,insert语句
    • 查看表数据,select语句
  • Golang使用SQLite(XORM)
    • 安装xorm
    • 使用xorm
    • 试试xorm
      • 下载gcc
      • 安装gcc
      • 配置gcc环境变量
    • 重新试试
  • xorm学习

前言

我们在beego搭建出来的api项目中,简单的对XORM(sqlite)进行一个学习使用,使用xorm。

安装SQLite

sqlite下载页面:SQLite Download Page

在页面中下载sqlite-tools-win32-x86-3380500.zip

SQLite简单使用

在sqlite安装文件夹中双击sqlite3.exe使用sqlite,如下:


创建数据库

sqlite是区分大小写的!!!

初次使用,我们先创建一个数据库,使用.open命令,如下

上面的命令创建了数据库文件 test.db,位于 sqlite3 命令同一目录下。

打开已存在数据库也是用 .open 命令,以上命令如果 test.db 存在则直接会打开,不存在就创建它。

查看数据库

一旦数据库被创建,您就可以使用 SQLite 的 .databases 命令来检查它是否在数据库列表中,如下所示:

数据库创建成功后,我们就应该创建表了。

创建表

使用create table命令创建表,如下:

sqlite> CREATE TABLE STUDENT(ID INT PRIMARY KEY     NOT NULL,NAME           TEXT    NOT NULL,AGE            INT     NOT NULL
);

查看表

创建表完成后,使用.tables查看表,如下:

创建表记录,insert语句

使用insert语句插入记录,如下:

INSERT INTO STUDENT (ID,NAME,AGE) VALUES (1, 'Paul', 32);

查看表数据,select语句

使用select语句查询表数据,如下:

SELECT * FROM STUDENT;

此外,还可以设置格式化的输出,如下:

sqlite>.header on
sqlite>.mode column
sqlite> SELECT * FROM STUDENT;

Golang使用SQLite(XORM)

安装xorm

数据库创建好了,我们就先把他放在一边,不管了。

安装xorm:

go get xorm.io/xorm

安装sqlite驱动:

go get github.com/mattn/go-sqlite3

也可以直接在项目中去import,然后让Goland去帮我们自动下载。

使用xorm

xorm教程:介绍 · Go语言中文文档-xorm (topgoer.com)

我们在之前使用beego创建的api项目中,自己创建一个dao文件夹,然后在这里面创建一个sqlite.go文件,该文件的作用是和数据库打交道(CRUD)。如下:

dao/userDao.go

package daoimport ("fmt""github.com/go-xorm/xorm"_ "github.com/mattn/go-sqlite3"
)var (Engine *xorm.Engine
)func init() {var err errorEngine, err = xorm.NewEngine("sqlite3", "D:/my/sqlite/install/sqlite-tools-win32-x86-3380500/test.db")if err != nil {fmt.Println(err)}fmt.Println("数据库引擎创建成功")err = Engine.Ping()if err != nil {fmt.Println(err)}fmt.Println("数据库连接成功")
}

然后在models里面调用我们的dao层,如下:

models/user.go

type User struct {Id       string  `xorm:"ID pk"`Username string  `xorm:"USERNAME"`Password string  `xorm:"PASSWORD"`Profile  Profile `xorm:"-"`
}
......
......
......
func GetAllUsers() map[string]*User {allUsers := make([]*User, 0)err := dao.Engine.Table("users").Find(&allUsers)if err != nil {fmt.Println(err)}for _, v := range allUsers {UserList[v.Id] = v}return UserList
}

从这里代码可以发现我查询的是users表,但是这个表和我上面示例创建的student表差不多,只是字段的区别,不用在意。

试试xorm

我们使用bee run启动项目,试试我们的xorm,如下:

我们使用bee run启动项目后,发现无法运行,项目报错。原因是sqlite需要用到gcc,所以我们需要去下载gcc。

下载gcc

gcc下载页面:Download | tdm-gcc (jmeubank.github.io)

我使用的是gcc 9.2,如下:

安装gcc

直接一直next,小白安装法,一步到位

1、双击exe文件

2、选择create

3、64位系统选择第二个

4、选择安装目录

5、选择组件

配置gcc环境变量

安装gcc完成后,需要把他加入到环境变量中,如下:

然后使用 gcc -v 命令验证gcc是否安装完成,如下:

重新试试

程序中打上断点,debug模式运行项目,依然打开我们的swagger,然后测试刚刚的GetAllUsers接口,看看结果,如下:

swagger:

项目调试:

可以看到我们数据库中的结果是已经取出来了的。然后我们塞到我们需要的UserList去。

在swagger上面也可以看见结果了,如下:

xorm学习

在上面的简单测试中,我们试了试xorm查找的Find方法,接下来,我们全面的讲讲xorm的东西。

文档 - XORM

XORM入门,使用SQLite相关推荐

  1. 大数据入门(SQLite手机本地轻量级数据库增删改查)

    SQLite手机本地轻量级数据库 数据库分为: 1.关系型数据库(mysql主外键属于关系型) 2.对象型数据库(oracle) 3.嵌入式数据库 案例: 安卓控件(5个Button)访问Activi ...

  2. Android入门(十一)SQLite CURD

    原文链接:http://www.orlion.ga/594/ 一.添加数据 SQLiteOpenHelper的getReadableDatabase()或getWritableDatabase()方法 ...

  3. Android入门(十二)SQLite事务、升级数据库

    原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...

  4. 快递包裹自动化分拣系统_包裹识别系统的类型

    快递包裹自动化分拣系统 包裹识别码的类型 (Types of Parcel identifiers) There are several classes or parcel identificatio ...

  5. go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用

    Go语言是一种跨平台(Mac OS.Windows.Linux 等)的静态编译型语言.拥有媲美C语言的强大性能,支持静态类型安全,在普通计算机上能几秒内快速编译一个大项目,开发效率跟动态语言相差无几. ...

  6. 【总结】2014年度总结

    2014年度总结 2014年可以分为两个阶段,一阶段时在学校的半年时光,另一阶段是工作的半年光阴.(学校的总结,我就不写在这里) 时间如白驹过隙,半年转眼而过. 我入职到现在已然有了6个月了.6个月是 ...

  7. Python爬虫淘宝基于selenium抓取淘宝商品数据2021年测试过滑动验证

    配置一下"可能需要修改的参数",就可以食用底部代码了,ps:可能已失效 本文章代码功能 准备工作 Python用到的库和准备工作 可能需要修改的参数 在CMD中打开一个Chrome ...

  8. android 入门 006(sqlite增删改查)

    android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite;import android.content.Context; import a ...

  9. SQLite入门之数据类型

    2019独角兽企业重金招聘Python工程师标准>>> SQLite入门之数据类型 2011-05-23 16:47:47  来源:SeaYee 最近在开发一个可以记录日志的程序,要 ...

最新文章

  1. QGC添加显示多架无人机飞行轨迹
  2. 将图片资源文件整合到DLL文件中
  3. Ubuntu命令行下安装,卸载软件包的过程
  4. 利用小波融合对由聚焦失败导致的图像模糊进行修复
  5. 集成直流稳压电源设计报告_线性直流稳压电源结构,线性直流电源技术指标
  6. linux sshd进程起不来,linux sshd服务异常
  7. 基本数据类型和包装数据类型的使用标准
  8. spring 使用 groovy 的 utf-8 问题
  9. 【POJ2826】An Easy Problem?!(线段相交+分情况讨论+精度)
  10. arcgis注册dsoframer.ocx等组件
  11. C语言字符串转16进制
  12. 冰点下载:数据解析错误
  13. 二分法求解函数零点的Python程序
  14. c语言如何将十六进制转化为二进制数,C语言--将十进制整数转化为二进制与十六进制输出...
  15. NOIP2016排名(919~1419)
  16. RUBi: Reducing Unimodal Biases in Visual Question Answering
  17. “System.ComponentModel.Win32Exception配额不足,无法处理此命令。”问题
  18. UI——day5.什么是启动页
  19. Java短信确认机制_JAVA 消息确认机制之 ACK 模式
  20. Android中EditText中文英文长度控制

热门文章

  1. js实现统计字符串长度包含中文英文特殊字符
  2. vue 使用i18n和i18n Ally自动化翻译
  3. 如何在idea中打debug断点
  4. 小马哥---山寨仿苹果6 主板型号E255 低端仿机 芯片6571 拆机主板图与开机界面图
  5. Dev-C++ 配置 WinPcap 开发环境
  6. 非Xposed版 修改微信摇塞子
  7. .Net Web开发必备
  8. 常见linux运维选择题
  9. ATA-3000线缆测试仪,高精度测量仪器
  10. 互联网项目开发过程中的测试分类