导出mysql表结构生成grpc需要的proto文件工具
时间:2022-07-25
本文章向大家介绍导出mysql表结构生成grpc需要的proto文件工具,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用过grpc的同学都知道,写proto文件比较繁琐,尤其是写message,对应很多字段,为此写了一个简单的从mysql直接读取表结构,生成proto文件的工具。
工具的使用很简单,需要简单的配置,即可运行生成proto文件。 项目地址:https://github.com/guyan0319/...
准备
使用前需先安装依赖包go-sql-driver/mysql
$ go get -u github.com/go-sql-driver/mysql
使用说明:
func main() {
//模板文件存放路径
tpl := "d:/gopath/src/mysql-to-proto/template/proto.go.tpl"
//生成proto文件路径
file := "d:/gopath/src/mysql-to-proto/sso.proto"
//数据库名,这里填你自己的数据库名
dbName := "user"
//配置连接数据库信息
db, err := Connect("mysql", "root:123456@tcp(127.0.0.1:3306)/"+dbName+"?charset=utf8mb4&parseTime=true")
//Table names to be excluded
//需要排除表,这里的表不会生成对应的proto文件
exclude := map[string]int{"user_log": 1}
if err != nil {
fmt.Println(err)
}
if IsFile(file) {
fmt.Fprintf(os.Stderr, "Fatal error: ", "proto file already exist")
return
}
t := Table{}
//配置message,Cat
t.Message = map[string]Detail{
"Filter": {
Name: "Filter",
Cat: "custom",
Attr: []AttrDetail{{
TypeName: "uint64", //类型
AttrName: "id",//字段
}},
},
"Request": {
Name: "Request",
Cat: "all",
},
"Response": {
Name: "Response",
Cat: "custom",
Attr: []AttrDetail{
{
TypeName: "uint64",
AttrName: "id",
},
{
TypeName: "bool",
AttrName: "success",
},
},
},
}
//pachage名称
t.PackageModels = "sso"
//service名称
t.ServiceName = "Sso"
//配置services里面的rpc
t.Method = map[string]MethodDetail{
"Get": {Request: t.Message["Filter"], Response: t.Message["Request"]},
"Create": {Request: t.Message["Request"], Response: t.Message["Response"]},
"Update": {Request: t.Message["Request"], Response: t.Message["Response"]},
}
//处理数据库表字段属性
t.TableColumn(db, dbName, exclude)
//生成proto
t.Generate(file, tpl)
}
- 机器学习:XGBoost 安装及实战应用
- Ryu:如何在LLDP中添加自定义LLDPDU
- 机器学习|kaggle数据挖掘和求解的基本步骤
- mybatis_generator_逆向工程的使用笔记
- 纳税服务系统总结
- 纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】
- 纳税服务系统三(优化处理)【异常处理、抽取BaseAction】
- 机器学习|快速排序思想求topk
- 纳税服务系统二(用户模块)【POI、用户唯一性校验】
- 纳税服务系统四(角色模块)【角色与权限、角色与用户】
- 纳税服务系统五(登陆与系统拦截)【配置系统、子系统首页、登陆与拦截】
- 纳税服务系统六(信息发布管理模块)【Ueditor、异步信息交互、抽取BaseService、条件查询、分页】
- 纳税服务系统七(投诉管理模块)【显示投诉信息、处理回复、我要投诉、Quartz自动受理、统计图FusionCharts】
- Unikernel初体验
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 翻车!居然在这里翻车了!!!
- PAT (Advanced Level) Practice 1029 Median (25分)
- ServiceMesh的关键:边车模式(sidecar);又要开车了
- Codeforces Round #615 (Div. 3)A. Collecting Coins
- PAT (Advanced Level) Practice 1040 Longest Symmetric String (25分)
- 【Java】23 函数式编程
- 【Java】24 常用函数式接口
- mvnw,到底是什么鬼?
- 【Java】25 Stream 流
- Codeforces Round #615 (Div. 3)D. MEX maximizing
- PAT (Advanced Level) Practice 1039 Course List for Student (25分)
- Codeforces Round #615 (Div. 3) E. Obtain a Permutation
- 数据结构实验完结撒花之内部排序比较
- Codeforces Round #615 (Div. 3) F. Three Paths on a Tree
- Matlab 内联函数及匿名函数