{"id":18544270,"url":"https://github.com/tiyee/sqlgen","last_synced_at":"2025-08-23T04:14:50.061Z","repository":{"id":227791545,"uuid":"622787986","full_name":"tiyee/sqlgen","owner":"tiyee","description":"一个go语言小工具，可以利用lex和ast, 把建表语句转换成go struct，","archived":false,"fork":false,"pushed_at":"2023-05-22T08:24:56.000Z","size":41,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-21T08:27:48.244Z","etag":null,"topics":["go-generate","go-orm","goyacc","orm","sql","yacc"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tiyee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-04-03T04:09:21.000Z","updated_at":"2024-03-19T18:35:13.000Z","dependencies_parsed_at":"2024-03-15T06:48:29.546Z","dependency_job_id":"54523317-45c8-42e5-b04a-46814ed0a897","html_url":"https://github.com/tiyee/sqlgen","commit_stats":null,"previous_names":["tiyee/sqlgen"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiyee%2Fsqlgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiyee%2Fsqlgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiyee%2Fsqlgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiyee%2Fsqlgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tiyee","download_url":"https://codeload.github.com/tiyee/sqlgen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223407807,"owners_count":17140562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go-generate","go-orm","goyacc","orm","sql","yacc"],"created_at":"2024-11-06T20:15:51.109Z","updated_at":"2024-11-06T20:15:51.190Z","avatar_url":"https://github.com/tiyee.png","language":"Go","readme":"# sqlgen\n一个go语言小工具，可以利用lex和ast, 把建表语句转换成go struct，\n\n## tutorial\n\n执行命名即可生成\n\n`go run cmd/sqlgen.go --in database/test.sql --out models/shop_order.go --pkg  models`\n\n本项目内置了一个简单的orm，可以根据实际需要更改。\n\n因为orm用到了generic，所以go version \u003e=1.8, 如果不需要这个orm，则可以降低go版本\n\n\n## usage\n\n参数说明\n* `--in` sql语句保存文件\n* `--out` 输出文件，如果不传，咋保存到`os.stdout`\n* `--pkg` 输出文件的package名称\n\n## v4版本\n\n默认版本用的是tidb的parser，包含依赖较多，并不是很满意，所以开发了基于yacc的版本，但是v3只是初级版，ast的抽象程序较低，代码质量也不高，但是为了方便其他人学习，还是保留了下来。\n\n## v5版本\n\nv5是一个完整的版本,采用goyacc解析sql语句生成ast，然后根据ast用go自带的编译器生成go代码\n\n生成parse文件`go run golang.org/x/tools/cmd/goyacc -l -o v5/out.go v5/lexer.y`\n\n如果本地没有安装tools，记得先安装`go get -u golang.org/x/tools`\n\n生成go文件`go run cmd/v5.go --in database/test.sql --out models/shop_order.go --pkg  models`\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftiyee%2Fsqlgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftiyee%2Fsqlgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftiyee%2Fsqlgen/lists"}