XORM入门,使用SQLite
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相关推荐
- 大数据入门(SQLite手机本地轻量级数据库增删改查)
SQLite手机本地轻量级数据库 数据库分为: 1.关系型数据库(mysql主外键属于关系型) 2.对象型数据库(oracle) 3.嵌入式数据库 案例: 安卓控件(5个Button)访问Activi ...
- Android入门(十一)SQLite CURD
原文链接:http://www.orlion.ga/594/ 一.添加数据 SQLiteOpenHelper的getReadableDatabase()或getWritableDatabase()方法 ...
- Android入门(十二)SQLite事务、升级数据库
原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...
- 快递包裹自动化分拣系统_包裹识别系统的类型
快递包裹自动化分拣系统 包裹识别码的类型 (Types of Parcel identifiers) There are several classes or parcel identificatio ...
- go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用
Go语言是一种跨平台(Mac OS.Windows.Linux 等)的静态编译型语言.拥有媲美C语言的强大性能,支持静态类型安全,在普通计算机上能几秒内快速编译一个大项目,开发效率跟动态语言相差无几. ...
- 【总结】2014年度总结
2014年度总结 2014年可以分为两个阶段,一阶段时在学校的半年时光,另一阶段是工作的半年光阴.(学校的总结,我就不写在这里) 时间如白驹过隙,半年转眼而过. 我入职到现在已然有了6个月了.6个月是 ...
- Python爬虫淘宝基于selenium抓取淘宝商品数据2021年测试过滑动验证
配置一下"可能需要修改的参数",就可以食用底部代码了,ps:可能已失效 本文章代码功能 准备工作 Python用到的库和准备工作 可能需要修改的参数 在CMD中打开一个Chrome ...
- android 入门 006(sqlite增删改查)
android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite;import android.content.Context; import a ...
- SQLite入门之数据类型
2019独角兽企业重金招聘Python工程师标准>>> SQLite入门之数据类型 2011-05-23 16:47:47 来源:SeaYee 最近在开发一个可以记录日志的程序,要 ...
最新文章
- QGC添加显示多架无人机飞行轨迹
- 将图片资源文件整合到DLL文件中
- Ubuntu命令行下安装,卸载软件包的过程
- 利用小波融合对由聚焦失败导致的图像模糊进行修复
- 集成直流稳压电源设计报告_线性直流稳压电源结构,线性直流电源技术指标
- linux sshd进程起不来,linux sshd服务异常
- 基本数据类型和包装数据类型的使用标准
- spring 使用 groovy 的 utf-8 问题
- 【POJ2826】An Easy Problem?!(线段相交+分情况讨论+精度)
- arcgis注册dsoframer.ocx等组件
- C语言字符串转16进制
- 冰点下载:数据解析错误
- 二分法求解函数零点的Python程序
- c语言如何将十六进制转化为二进制数,C语言--将十进制整数转化为二进制与十六进制输出...
- NOIP2016排名(919~1419)
- RUBi: Reducing Unimodal Biases in Visual Question Answering
- “System.ComponentModel.Win32Exception配额不足,无法处理此命令。”问题
- UI——day5.什么是启动页
- Java短信确认机制_JAVA 消息确认机制之 ACK 模式
- Android中EditText中文英文长度控制