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

我开源了Go语言连接数据库和一键生成结构体的包【实用】

项目地址:https://gitee.com/zht639/my_gopkg

autosql

autosql 是一个简化数据库使用的模块,支持常见的数据库(MySQL、PostgreSQL、SQLite、SQL Server)。该模块不仅提供了数据库连接函数,还能自动生成数据表对应的结构体,极大简化了数据库的初始化操作。

一、使用方法
打开项目根目录,在该目录下打开命令行,然后按如下步骤操作。

(1)初始化本地mod(有则跳过此步)

go mod init 你的模块名

(2)下载到本地(若之前就下载过,请忽略此步,转至第四步)

go get gitee.com/zht639/my_gopkg

(3)在go文件中导包即可

import "gitee.com/zht639/my_gopkg/autosql"

(4)若之前就下载过我的包,则需要打开mod,删除require语句,再执行如下指令

go mod tidy

二、功能概述

  • 连接函数:

    • ConnMysql(username, password, host, port, dbname string): 连接 MySQL 数据库。
    • ConnPostgres(username, password, host, port, dbname string): 连接 PostgreSQL 数据库。
    • ConnSQLite(filepath string): 连接 SQLite 数据库。
    • ConnSQLServer(username, password, host, port, dbname string): 连接 SQL Server 数据库。
  • 结构体生成:

    • GenStruct(db *gorm.DB, tableName string): 生成数据库中指定表的结构体。
    • GenAllStructs(db *gorm.DB): 生成数据库中所有表的结构体。

    使用生成结构体功能可以将数据库中的表映射为 Go 语言的结构体,极大地提高了开发效率和代码的可维护性。

三、使用示例

以mysql为例,连接数据库并生成表的结构体:

package mainimport ("fmt""gitee.com/zht639/my_gopkg/autosql"
)func main() {db, err := autosql.ConnMysql("root", "123456", "localhost", "3306", "db01")if err != nil {fmt.Println(err)return}// 自动生成所有表对应的结构体autosql.GenAllStructs(db)//或者生成指定表对应的结构体//autosql.GenStruct(db, "student")
}

该函数将会在当前目录下(main.go所在目录)生成一个model包,该文件包含了数据库中所有表的结构体,
目录结构如下:

├─model
│    grade.gen.go
│    student.gen.go
│    user.gen.go

打开其中一个文件,它不仅包含了结构体定义,还包含了json绑定字符串和返回表名的方法:

// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.package modelimport ("time"
)const TableNameStudent = "student"// Student mapped from table <student>
type Student struct {Stuid int32     `gorm:"column:stuid;primaryKey;autoIncrement:true" json:"stuid"`Stuno string    `gorm:"column:stuno" json:"stuno"`Name  string    `gorm:"column:name" json:"name"`Sex   string    `gorm:"column:sex" json:"sex"`Age   int32     `gorm:"column:age" json:"age"`Birth time.Time `gorm:"column:birth" json:"birth"`
}// TableName Student's table name
func (*Student) TableName() string {return TableNameStudent
}

之后若数据库中的表结构发生变化,只需用GenStruct()GenAllStructs()重新生成结构体即可。

注:该包基于GORM相关的包,但本人的包已包含相关依赖,直接下载本人的包即可使用GORM,CRUD操作也推荐使用GORM的提供的函数。

相关文章:

我开源了Go语言连接数据库和一键生成结构体的包【实用】

项目地址&#xff1a;https://gitee.com/zht639/my_gopkg autosql autosql 是一个简化数据库使用的模块&#xff0c;支持常见的数据库&#xff08;MySQL、PostgreSQL、SQLite、SQL Server&#xff09;。该模块不仅提供了数据库连接函数&#xff0c;还能自动生成数据表对应的结…...

Sentinel 快速入门

前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读&#xff1a;Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界&#xff01;这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库&#xff08;Java 客户端&#xff09;&#xff1a…...

基于SpringBoot健康生活助手微信小程序【附源码】

基于SpringBoot健康生活助手微信小程序 效果如下&#xff1a; 管理员登录界面 管理员主界面 用户管理界面 健康记录管理界面 健康目标管理界面 微信小程序首页界面 活动信息界面 留言反馈界面 研究背景 近年来&#xff0c;由于计算机技术和互联网技术的飞速发展&#xff0c;…...

功能安全实战系列-软件FEMA分析与组件鉴定

本文框架 前言1. 功能安全分析1.1 Why1.2 What?1.3 How?1.3.1 分析范围确定1.3.2 失效模式分析1.3.3 安全措施制定1.3.4 确认是否满足功能安全目标2. 软件组件鉴定2.1 Why2.2 How?前言 在本系列笔者将结合工作中对功能安全实战部分的开发经验进一步介绍常用,包括Memory(Fl…...

【数据结构与算法】链表(上)

记录自己所学&#xff0c;无详细讲解 无头单链表实现 1.项目目录文件 2.头文件 Slist.h #include <stdio.h> #include <assert.h> #include <stdlib.h> struct Slist {int data;struct Slist* next; }; typedef struct Slist Slist; //初始化 void SlistI…...

svn-拉取与更新代码

右键项目文件 进行更新与提交代码&#xff0c;提交代码选择更改的文件以及填写commit...

【C++ 算法进阶】算法提升四

数组查询问题 &#xff08;数组优化&#xff09; 题目 数组为 {3 &#xff0c; 2&#xff0c; 2 &#xff0c;3 &#xff0c;1} 查询为&#xff08;0 &#xff0c;3 &#xff0c;2&#xff09; 这个查询的意义是 在数组下标0~3这个范围上 有多少个2 &#xff08;答案为2&…...

多种方式实现安全帽佩戴检测

为什么要佩戴安全帽 在探讨安全帽佩戴检测之前&#xff0c;我们先来了解下安全帽佩戴的必要性&#xff1a; 保护头部免受外力伤害 防止物体打击 在建筑施工、矿山开采、工厂车间等场所&#xff0c;经常会有高空坠物的风险。例如在建筑工地上&#xff0c;可能会有工具、材料、…...

基于PHP+MySQL+Vue的网上订餐系统

摘要 本文介绍了一个基于PHPMySQLVue技术的网上订餐系统。该系统旨在为用户提供便捷的在线订餐服务&#xff0c;同时提高餐厅的运营效率。系统后端采用PHP语言开发&#xff0c;利用MySQL数据库进行数据存储与管理&#xff0c;实现了用户注册登录、菜品浏览、购物车管理、订单提…...

Vue学习笔记 Class绑定 Style绑定 侦听器 表单输入绑定 模板引用 组件组成 组件嵌套关系

文章目录 Class绑定绑定对象绑定数组注意事项 style绑定绑定对象代码效果展示 绑定数组 侦听器注意的点代码效果 表单输入绑定示例代码效果展示 修饰符.lazy.number.trim 模板引用组件组成组件组成结构引入组件步骤style中的scoped作用 组件嵌套关系 Class绑定 绑定对象 绑定数…...

【AIGC】ChatGPT与人类理解力的共鸣:人机交互中的心智理论(ToM)探索

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;心智理论(Theory of Mind,ToM)心智理论在心理学与神经科学中的重要性心智理论对理解同理心、道德判断和社交技能的重要性结论 &#x1f4af;乌得勒支大学研究对ChatGPT-4…...

代码训练营 day39|0-1背包问题,LeetCode 416

前言 这里记录一下陈菜菜的刷题记录&#xff0c;主要应对25秋招、春招 个人背景 211CS本CUHK计算机相关硕&#xff0c;一年车企软件开发经验 代码能力&#xff1a;有待提高 常用语言&#xff1a;C 系列文章目录 第九章 动态规划part03 文章目录 前言系列文章目录第九章 动态…...

LeetCode 203 - 移除链表元素

题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 解题思路 创建一个虚拟头节点dummyHead&#xff0c;并将其next指向给定的头节点head&#xff0c;这样可以避免处理头节点的特…...

【海图界面上一些常见术语UTC、HDG、COG、SOG、LAT、LON的基本解释】

当然&#xff0c;以下是关于海图界面上一些常见术语UTC、HDG、COG、SOG、LAT、LON的基本解释&#xff1a; UTC (Coordinated Universal Time) 定义&#xff1a;UTC 是协调世界时&#xff08;Coordinated Universal Time&#xff09;的缩写&#xff0c;是一种与地球自转无关的…...

HL7协议简介及其在STM32上的解析实现

近期完成一个医疗相关的项目,其中包括了体征监测设备,该设备使用的通信协议便是HL7 V2.4 协议,在医疗信息化领域,HL7(Health Level Seven)协议扮演着至关重要的角色。它是一种国际标准,用于定义医疗机构间以及医疗设备与信息系统之间的数据交换格式和通信协议。HL7标准旨…...

TensorRT推理端到端

TensorRT推理端到端 1.参考链接2.宿主机上安装CUDA 12.4.13.安装nvidia-container-toolkit4.创建ghcr.io/intel/llvm/ubuntu2204_base容器5.容器内安装CUDA 12.4.1 + TensorRT10.1.06.安装依赖7.准备resnet50模型8.准备bert模型9.准备yolov5m模型10.编译TensorRT推理程序11.onn…...

获取历史的天气预报数据的网站

要获取从2019年到现在某个中国城市的天气数据&#xff0c;您可以通过以下方法实现&#xff1a; 1. 使用第三方天气数据API 许多天气服务提供商提供了历史天气数据的API接口&#xff0c;您可以通过这些API获取所需的数据。以下是一些常用的天气数据API提供商&#xff1a; 1.1…...

【VUE】Vue中常用的修饰符

事件修饰符 .stop&#xff1a;阻止事件冒泡。.prevent&#xff1a;阻止默认事件。.capture&#xff1a;使用事件捕获模式。.self&#xff1a;只当事件在该元素本身&#xff08;比如不是子元素&#xff09;触发时触发回调。.once&#xff1a;只触发一次事件。 按键修饰符 .en…...

数据分箱:如何确定分箱的最优数量?

选择最优分箱可以考虑以下几种方法&#xff1a; 一、基于业务理解 分析业务背景&#xff1a;从业务角度出发&#xff0c;某些特征可能有自然的分组或区间划分。例如&#xff0c;年龄可以根据不同的人生阶段进行分箱&#xff0c;收入可以根据常见的收入等级划分。 优点&#x…...

机器学习核心功能:分类、回归、聚类与降维

机器学习核心功能&#xff1a;分类、回归、聚类与降维 机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习&#xff0c;它们可以进一步细化为特定的任务&#xff0c;如分类、回归、聚类和降维…...

Neeshck-Z-lmage_LYX_v2代码实例:Streamlit交互界面开发与参数绑定逻辑

Neeshck-Z-lmage_LYX_v2代码实例&#xff1a;Streamlit交互界面开发与参数绑定逻辑 1. 项目核心&#xff1a;一个更聪明的本地绘画工具 如果你用过一些AI绘画工具&#xff0c;可能会遇到几个头疼的问题&#xff1a;想换个画风得重启软件、调参数像开盲盒、电脑配置不够直接卡…...

OpenClaw版本升级:无缝迁移Kimi-VL-A3B-Thinking服务的实践

OpenClaw版本升级&#xff1a;无缝迁移Kimi-VL-A3B-Thinking服务的实践 1. 升级前的准备工作 上周五晚上&#xff0c;当我正准备下班时&#xff0c;收到了OpenClaw团队发来的新版本发布邮件。作为一个重度依赖OpenClawKimi-VL-A3B-Thinking组合的开发者&#xff0c;我既期待新…...

SmartX 榫卯企业云平台 + 亚信安全 DeepSecurity 企业云安全防护联合解决方案

近日&#xff0c;北京志凌海纳科技股份有限公司&#xff08;以下简称“SmartX”&#xff09;与亚信安全科技股份有限公司&#xff08;以下简称“亚信安全”&#xff09;携手推出企业云安全防护联合解决方案。该方案将 SmartX 榫卯企业云平台与亚信安全的专业云主机安全产品 Dee…...

springboot+deepseek实现AI接口调用

deepseek注册流程就不复述了&#xff0c;需要的小伙伴可以留言&#xff0c;单独指导。需要调用deepseek大模型接口的来看看了&#xff0c;直接上代码DsControllerpackage com.example.demo.controller;import com.example.demo.service.DsService; import org.springframework.…...

Gemma-3-12b-it真实作品集:10组高质量图片问答对话效果分享

Gemma-3-12b-it真实作品集&#xff1a;10组高质量图片问答对话效果分享 1. 工具概览 1.1 核心能力简介 Gemma-3-12b-it是一款基于Google大模型技术开发的多模态交互工具&#xff0c;能够同时处理图片和文本输入&#xff0c;为用户提供智能问答服务。不同于常见的纯文本对话机…...

Fish Speech-1.5中文语音惊艳案例:古诗词吟诵/方言童谣/戏曲念白生成

Fish Speech-1.5中文语音惊艳案例&#xff1a;古诗词吟诵/方言童谣/戏曲念白生成 你听过AI用抑扬顿挫的语调吟诵唐诗宋词吗&#xff1f;你听过AI用地道的方言念出童年歌谣吗&#xff1f;你听过AI模仿戏曲念白&#xff0c;字正腔圆、韵味十足吗&#xff1f; 今天&#xff0c;我…...

OpenClaw+千问3.5-9B社交媒体管理:定时发布与智能互动

OpenClaw千问3.5-9B社交媒体管理&#xff1a;定时发布与智能互动 1. 为什么选择OpenClaw管理社交媒体 去年我开始尝试运营技术类社交媒体账号时&#xff0c;每天要花2-3小时手动处理内容发布和粉丝互动。直到发现OpenClaw这个能直接操控我电脑的AI助手&#xff0c;配合千问3.…...

uv下载软件包

需要在项目根目录执行uv add 包名 否则找不到项目的.venv&#xff0c;会下载到终端的conda环境uv add openai...

高光谱成像基础(完)光谱融合(Spectral Fusion)肆

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单&#xff0c;下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)…...

快速了解智能体

1.了解智能体 这个时代&#xff0c;AI开始已经深入到我们生活中了&#xff0c;智能体的概念也慢慢出现在我们的视野中了。这两个概念并不完全一样。AI 是模拟人类智能的技术领域与能力集合&#xff0c;智能体是依托 AI 实现自主感知、决策、 行动的目标驱动实体&#xff0c;后者…...