SQLAlchemy 模型代码生成器

SQLAlchemy 模型代码生成器

项目简介

这是一个基于 Python SQLAlchemy 的数据库模型代码生成器,可以自动将数据库表结构转换为 SQLAlchemy ORM 模型类。该工具能够大大提高开发效率,减少手动编写模型代码的工作量。

主要功能

  1. 自动连接 MySQL 数据库
  2. 自动扫描数据库表结构
  3. 生成符合 SQLAlchemy 规范的模型类代码
  4. 支持多种数据类型的映射
  5. 自动处理字段属性(主键、索引、可空等)
  6. 生成便捷的模型类方法(__repr__to_dict

技术特性

1. 数据类型映射

工具支持以下数据类型的自动映射:

  • INTEGER -> int
  • BIGINT -> int
  • VARCHAR -> str
  • TEXT -> str
  • DATETIME -> datetime
  • BOOLEAN -> bool
  • FLOAT -> float
  • DECIMAL -> float

2. 智能字段处理

  • 自动处理主键(primary_key)
  • 自动处理索引(index)
  • 自动处理非空约束(nullable)
  • 智能处理默认值(default)
  • 特殊处理时间字段(created_at, updated_at)

3. 代码生成特性

  • 自动生成规范的导入语句
  • 自动生成表名映射
  • 生成类型注解(使用 Python typing)
  • 生成字段注释
  • 生成实用的类方法

使用方法

基本用法

python main.py

带表名过滤器的用法

python main.py table_name

代码结构

核心函数

  1. ensure_directory(directory): 确保输出目录存在
  2. get_column_type(column_type): 转换 SQLAlchemy 列类型到 Python 类型
  3. get_sqlalchemy_type(column_type): 获取 SQLAlchemy 的列类型定义
  4. generate_model(inspector, table_name, output_dir): 生成单个模型文件
  5. main(table_filter=None): 主函数,协调整个生成过程

生成的模型特性

每个生成的模型类包含:

  1. 标准的类定义和表名映射
  2. 完整的字段定义和类型注解
  3. __repr__ 方法用于对象的字符串表示
  4. to_dict 方法用于序列化对象

配置说明

数据库连接配置:

  • 主机:DB_HOST
  • 端口:DB_PORT
  • 用户名:DB_USER
  • 密码:DB_PASSWORD
  • 数据库名:DB_DATABASE

输出示例

生成的模型类示例:

class UserModel(Base):
    __tablename__ = 'user'
    
    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    username: Mapped[str] = mapped_column(String(50), nullable=False)
    created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())
    
    def __repr__(self):
        return f"<UserModel(id={
     self.id}, username={
     self.username})>"
        
    def to_dict(self):
        return {
   
            'id': self.id,
            'username': self.username,
            'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else None
        }

注意事项

  1. 确保有正确的数据库连接权限
  2. 生成的代码文件位于 code 目录下
  3. 默认使用 UTF-8 编码生成文件
  4. 自动处理特殊字符和转义

技术依赖

  • Python 3.x
  • SQLAlchemy
  • PyMySQL
  • typing(Python 标准库)
  • datetime(Python 标准库)
  • os(Python 标准库)
  • sys(Python 标准库)

这个工具极大地简化了数据库模型代码的生成过程,特别适合处理大型数据库的模型创建工作。通过自动化生成过程,不仅提高了开发效率,还确保了代码的一致性和规范性。

完整代码实现

以下是完整的代码实现(main.py):

import os
import sys
from sqlalchemy import create_engine, inspect
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, Boolean, Text, func
from sqlalchemy.orm import sessionmaker, Mapped, mapped_column
from datetime import datetime
import urllib.parse
from typing import Optional, List

# 数据库配置
DB_HOST = ""
DB_PORT = 3306
DB_USER = "dms_user_60bf111"
DB_PASSWORD = urllib.parse.quote_plus("XXX")
DB_DATABASE = "XXX"

# 构建数据库URL
DATABASE_URL = f"mysql+pymysql://{
     DB_USER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老大白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值