在线SQL转SQLAlchemy工具 | 生成Python ORM模型 - GoTool在线工具集

高效后端开发工具系列 - 指南与案例

😫 核心痛点

一款高效的在线 SQL 转 SQLAlchemy 工具,支持自动解析 SQL 语句并生成 Python SQLAlchemy 模型代码,适用于数据库管理、后端开发和 ORM 结构映射。无需手写 SQLAlchemy 模型,一键转换 SQL 结构,提升开发效率,简化数据库操作。。在实际开发中,这些琐碎的转换或配置工作往往消耗大量精力且容易引入错误。GoTool 为此提供了快速、准确且免费的在线解决方案。

💡 功能亮点 & 使用方案

功能介绍

1.支持多种数据库的建表 sql转gorm, 其中包含(pg、oracle、mysql)等数据库; 建表语句, 建表语句, 建表语句(重要的说3遍)
2.在转换 sql 的时候, 需要确认下是否需要切换处理类型, 暂时支持3种处理方式(normal, postgresql, oracle), 默认: normal.
3.支持自定义过滤不需要的字段, 多个字段通过 , 隔开 说明: 不能在 sql 中包含注释内容(即: -- xxx# xxx); 由于此工具是通过 ; 来分割语句处理. 所以 normal 状态下可以同时处理多个建表语句; postgresqloracle 由于需要解析注释, 只支持单个建表语句.

示例

mysql 建表语句
CREATE TABLE if not exists user (
  id int NOT NULL AUTO_INCREMENT,
  name varchar(10) NOT NULL COMMENT '姓名',
  gender tinyint NOT NULL DEFAULT 0 COMMENT '性别 0-未知 1-男 2-女',
  age int NOT NULL COMMENT '年龄',
  created_date datetime DEFAULT CURRENT_TIMESTAMP,
  updated_date datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

处理后

# Code generated by https://gotool.top
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy import Column, DateTime, Integer, SmallInteger, String, func
import datetime

Base = declarative_base()

class UserModel(Base): 
    __tablename__ = "user"

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True, nullable=False)
    name: Mapped[str] = mapped_column(String(10), nullable=False, comment="姓名")
    gender: Mapped[int] = mapped_column(SmallInteger, default=0, nullable=False, comment="性别 0-未知 1-男 2-女")
    age: Mapped[int] = mapped_column(Integer, nullable=False, comment="年龄")
    created_date: Mapped[datetime.datetime] = mapped_column(DateTime, server_default=func.now())
    updated_date: Mapped[datetime.datetime] = mapped_column(DateTime, server_default=func.now())  

pgsql 建表语句
CREATE TABLE if not exists user (
  id character varying(32) NOT NULL DEFAULT sys_guid(),
  name character varying(10) NOT NULL,
  gender tinyint NOT NULL,
  age tinyint NOT NULL,
  created_date timestamp without time zone DEFAULT now(),
  updated_date timestamp without time zone DEFAULT now(),
  CONSTRAINT user_pkey PRIMARY KEY (id)
);
COMMENT ON TABLE user IS '用户表';
COMMENT ON COLUMN user.id IS '主键';
COMMENT ON COLUMN user.name IS '姓名';
COMMENT ON COLUMN user.gender IS '性别 0-未知 1-男 2-女';
COMMENT ON COLUMN user.age IS '年龄';
COMMENT ON COLUMN user.created_date IS '创建时间';
COMMENT ON COLUMN user.updated_date IS '更新时间';

处理后

# Code generated by https://gotool.top
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy import Column, DateTime, Integer, SmallInteger, String, func
import datetime

Base = declarative_base()

class UserModel(Base): 
    __tablename__ = "user"

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True, nullable=False)
    name: Mapped[str] = mapped_column(String(10), nullable=False, comment="姓名")
    gender: Mapped[int] = mapped_column(SmallInteger, default=0, nullable=False, comment="性别 0-未知 1-男 2-女")
    age: Mapped[int] = mapped_column(Integer, nullable=False, comment="年龄")
    created_date: Mapped[datetime.datetime] = mapped_column(DateTime, server_default=func.now())
    updated_date: Mapped[datetime.datetime] = mapped_column(DateTime, server_default=func.now())  

oracle 建表语句
CREATE TABLE if not exists user (
  id character varying(32) NOT NULL DEFAULT sys_guid(),
  name character varying(10) NOT NULL,
  gender tinyint NOT NULL,
  age tinyint NOT NULL,
  created_date date default sysdate,,
  updated_date date default sysdate,,
  CONSTRAINT user_pkey PRIMARY KEY (id)
);
COMMENT ON TABLE user IS '用户表';
COMMENT ON COLUMN user.id IS '主键';
COMMENT ON COLUMN user.name IS '姓名';
COMMENT ON COLUMN user.gender IS '性别 0-未知 1-男 2-女';
COMMENT ON COLUMN user.age IS '年龄';
COMMENT ON COLUMN user.created_date IS '创建时间';
COMMENT ON COLUMN user.updated_date IS '更新时间';

处理后

# Code generated by https://gotool.top
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy import Column, DateTime, Integer, SmallInteger, String, func
import datetime

Base = declarative_base()

class UserModel(Base): 
    __tablename__ = "user"

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True, nullable=False)
    name: Mapped[str] = mapped_column(String(10), nullable=False, comment="姓名")
    gender: Mapped[int] = mapped_column(SmallInteger, default=0, nullable=False, comment="性别 0-未知 1-男 2-女")
    age: Mapped[int] = mapped_column(Integer, nullable=False, comment="年龄")
    created_date: Mapped[datetime.datetime] = mapped_column(DateTime, server_default=func.now())
    updated_date: Mapped[datetime.datetime] = mapped_column(DateTime, server_default=func.now())