A utility for converting SQL database structure (CREATE TABLE) into migrations for popular frameworks (Laravel, FastAPI).
pip install -e .python sql2mig.py --framework=laravel --input=schema.sql --output=migrations/| Argument | Type | Description |
|---|---|---|
| --framework | laravel | fastapi | Framework selection for migration generation |
| --input | path to .sql | SQL file with DDL |
| --output | path to folder | Where to save migrations (default: migrations/) |
| --dialect (opt.) | mysql | postgresql | SQL dialect |
Each CREATE TABLE is converted to a separate migration file:
migrations/
├── 2025_06_08_0001_create_users_table.php
├── 2025_06_08_0002_create_posts_table.php
The format is compatible with Laravel (Schema::create(...), Blueprint, Migration class)
Generation of Alembic migrations:
alembic/versions/
├── 2025_06_08_0001_create_users.py
├── 2025_06_08_0002_create_posts.py
- One file per table
- Automatic naming: Y_m_d_His_index_create_TABLE_table.php
- SQL types mapped to framework types
- Support for PRIMARY KEY, NOT NULL, NULL
- Clean code generation without unnecessary clutter
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL
);
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);python sql2mig.py --framework=laravel --input=schema.sql --output=migrations/The utility is designed with extensibility in mind to support other frameworks. To add a new framework:
- Create a new generator class that inherits from BaseGenerator
- Implement migration generation methods
- Add the new framework to the list of available frameworks in the main sql2mig.py file
Утилита для конвертации SQL-структуры базы данных (CREATE TABLE) в миграции для популярных фреймворков (Laravel, FastAPI).
pip install -e .python sql2mig.py --framework=laravel --input=schema.sql --output=migrations/| Аргумент | Тип | Описание |
|---|---|---|
| --framework | laravel | fastapi | Выбор фреймворка для генерации |
| --input | путь к .sql | SQL-файл с DDL |
| --output | путь к папке | Куда сохранить миграции (по умолчанию: migrations/) |
| --dialect (опц.) | mysql | postgresql | Какой SQL-диалект |
Каждый CREATE TABLE преобразуется в отдельный файл миграции:
migrations/
├── 2025_06_08_0001_create_users_table.php
├── 2025_06_08_0002_create_posts_table.php
Формат совместим с Laravel (Schema::create(...), Blueprint, Migration класс)
Генерация Alembic-миграций:
alembic/versions/
├── 2025_06_08_0001_create_users.py
├── 2025_06_08_0002_create_posts.py
- Один файл на одну таблицу
- Автоматическое именование: Y_m_d_His_index_create_TABLE_table.php
- Сопоставление типов SQL с типами фреймворка
- Поддержка PRIMARY KEY, NOT NULL, NULL
- Чистая генерация кода без лишнего мусора
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL
);
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);python sql2mig.py --framework=laravel --input=schema.sql --output=migrations/Утилита разработана с учетом возможности расширения для поддержки других фреймворков. Для добавления нового фреймворка необходимо:
- Создать новый класс генератора, наследующийся от BaseGenerator
- Реализовать методы генерации миграций
- Добавить новый фреймворк в список доступных фреймворков в основном файле sql2mig.py