# Django DB Sync
**Django DB Sync** is a powerful, intelligent database synchronization tool designed specifically for Django projects. It automatically detects and resolves schema differences between your Django models and database tables, eliminating the need for manual migrations in many scenarios.
## Why Django DB Sync?
Unlike Django's built-in migrations system, Django DB Sync works by analyzing the current state of your database and comparing it directly with your Django models. This approach is particularly valuable when:
- Working with legacy databases that weren't created with Django
- Dealing with databases that have been manually modified
- Syncing schemas across different environments
- Cleaning up orphaned tables and unused columns
- Requiring granular control over database schema changes
## Key Features
- Multi-Database Support: Works seamlessly with MySQL, PostgreSQL, SQLite, and Oracle
- Intelligent Schema Detection: Automatically compares Django models with actual database schema
- Safety First: Built-in dry-run mode and backup creation before making changes
- Comprehensive Reporting: Detailed HTML reports and colored terminal output
- Orphaned Table Management: Identifies and manages tables without corresponding Django models
- Smart Field Mapping: Intelligent mapping between Django field types and database column types
- Constraint Handling: Proper management of foreign keys, indexes, and other constraints
- Beautiful Interface: Colored terminal output with progress indicators and status updates
## 🛠️ Core Capabilities
1. **Table Management**: Create, rename, and manage database tables
2. **Column Operations**: Add, modify, and remove columns with proper type mapping
3. **Constraint Handling**: Manage foreign keys, unique constraints, and indexes
4. **Data Preservation**: Safely modify schemas while preserving existing data
5. **Backup Integration**: Automatic backup creation before destructive operations
6. **Detailed Reporting**: Comprehensive logs and HTML reports of all operations
## 🔧 Technical Highlights
- **Database Agnostic**: Works with all major database backends supported by Django
- **Type-Safe Operations**: Intelligent field type mapping and validation
- **Transaction Safety**: All operations wrapped in database transactions
- **Extensible Architecture**: Modular design for easy customization and extension
- **Production Ready**: Thoroughly tested with comprehensive error handling
## Installation
```bash
pip install django-dbsync
```
Add to your Django settings:
```python
INSTALLED_APPS = [
# ... other apps
'django_dbsync',
]
# Optional: Configure django-dbsync
DJANGO_DBSYNC = {
'DEFAULT_DATABASE': 'default',
'AUTO_CREATE_TABLES': True,
'AUTO_ADD_COLUMNS': True,
'AUTO_DROP_COLUMNS': False,
'EXCLUDE_APPS': ['admin', 'contenttypes', 'sessions'],
'COLORED_OUTPUT': True,
'SHOW_ORPHANED_TABLES': True,
}
```
## Usage
### Basic Sync
```bash
# Basic sync commands
python manage.py dbsync # Sync default database
python manage.py dbsync --database=secondary # Sync specific database
python manage.py dbsync --dry-run # Show changes without applying
python manage.py dbsync --auto-approve # Auto-approve all changes (dangerous!)
python manage.py dbsync --drop-orphaned # Drop orphaned tables (dangerous!)
```
### Advanced Options
```bash
# App management
python manage.py dbsync --exclude-apps admin auth contenttypes # Exclude specific apps
python manage.py dbsync --include-apps myapp otherapp # Include only specific apps
# Backup and reporting
python manage.py dbsync --backup # Create backup before sync
python manage.py dbsync --report json # Generate JSON report
python manage.py dbsync --report html # Generate HTML report
python manage.py dbsync --report both # Generate both JSON and HTML reports
# Safety checks
python manage.py dbsync --drop-orphaned --dry-run # Check what would be dropped
python manage.py dbsync --suggest-manual-commands # Show manual SQL commands
python manage.py dbsync --generate-orphaned-models # Generate models for orphaned tables
```
### Database Check
```bash
# Database checking commands
python manage.py dbcheck # Check database schema
python manage.py dbcheck --database=secondary # Check specific database
python manage.py dbcheck --table=my_table # Show specific table details
python manage.py dbcheck --compare-models # Compare with Django models
python manage.py dbcheck --check-case-mismatches # Check for case mismatches
python manage.py dbcheck --check-name-conflicts # Check for name conflicts
python manage.py dbcheck --verbose # Show detailed information
python manage.py dbcheck --fix # Attempt to fix issues automatically
python manage.py dbcheck --include-apps=app1,app2 # Check specific apps only
python manage.py dbcheck --include-tables=table1,table2 # Check specific tables only
```
## Configuration
### Database Settings
Support for multiple databases:
```python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'main_db',
'USER': 'user',
'PASSWORD': 'pass',
'HOST': 'localhost',
},
'analytics': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'analytics_db',
'USER': 'user',
'PASSWORD': 'pass',
'HOST': 'localhost',
}
}
# Sync configuration per database
DJANGO_DBSYNC = {
'CUSTOM_DATABASES': {
'analytics': {
'AUTO_DROP_COLUMNS': True,
'EXCLUDE_APPS': ['admin'],
}
}
}
```
### Complete Settings Reference
```python
DJANGO_DBSYNC = {
# Database configuration
'DEFAULT_DATABASE': 'default',
'CUSTOM_DATABASES': None,
# Sync behavior
'AUTO_CREATE_TABLES': True,
'AUTO_ADD_COLUMNS': True,
'AUTO_DROP_COLUMNS': False,
'AUTO_RENAME_TABLES': False,
'AUTO_FIX_TABLE_CASE': True, # Automatically fix table name case mismatches
'BACKUP_BEFORE_SYNC': True,
# Output settings
'COLORED_OUTPUT': True,
'VERBOSE_LOGGING': True,
'SHOW_PROGRESS': True,
# Safety settings
'EXCLUDE_APPS': ['sessions', 'admin', 'contenttypes'],
'EXCLUDE_TABLES': [],
'DRY_RUN_MODE': False,
# Report settings
'GENERATE_HTML_REPORT': False,
'REPORT_OUTPUT_DIR': 'dbsync_reports/',
'SHOW_ORPHANED_TABLES': True,
}
```
## Supported Field Types
All Django field types are supported across MySQL, PostgreSQL, and SQLite:
- AutoField, BigAutoField
- CharField, TextField, EmailField, URLField, SlugField
- IntegerField, BigIntegerField, SmallIntegerField
- PositiveIntegerField, PositiveSmallIntegerField
- FloatField, DecimalField
- BooleanField
- DateField, DateTimeField, TimeField
- UUIDField, JSONField
- FileField, ImageField
- ForeignKey, OneToOneField, ManyToManyField
## Table Name Case Handling
Django-dbsync automatically detects and handles table name case mismatches between your Django models and the database. This is common when:
- Your model has `db_table = 'abcd'` but the database table is `ABCD`
- Database systems are case-insensitive but Django models use specific casing
- Tables were created with different naming conventions
### Automatic Case Fixing
By default, the tool will automatically fix case-only mismatches (when `AUTO_FIX_TABLE_CASE = True`):
```bash
# The tool will automatically rename 'ABCD' to 'abcd'
python manage.py dbsync
```
### Manual Control
To disable automatic case fixing and get prompted for each rename:
```python
DJANGO_DBSYNC = {
'AUTO_FIX_TABLE_CASE': False,
}
```
### Checking for Case Mismatches
To check for table name case mismatches without fixing them:
```bash
python manage.py dbcheck --check-case-mismatches
```
This will show you all mismatches found and provide guidance on how to fix them.
### Manual SQL Commands for Table Renames
When table name conflicts are detected, you can get manual SQL commands to resolve them:
```bash
python manage.py dbsync --dry-run --suggest-manual-commands
```
This will show you the exact SQL commands needed to rename tables manually:
```
============================================================
🔧 MANUAL SQL COMMANDS FOR TABLE RENAMES
============================================================
The following SQL commands can be run manually to rename tables:
1. MySQL case-insensitive conflict resolution: 'publisher_detail2' → 'Publisher_detail2'
SQL: RENAME TABLE `publisher_detail2` TO `Publisher_detail2`;
💡 Instructions:
1. Connect to your database using your preferred SQL client
2. Run the commands above one by one
3. Run 'python manage.py dbsync' again to complete the sync
4. Make sure to backup your database before running these commands!
```
This gives you full control over table renaming operations while ensuring data safety.
**Note:** Manual SQL commands are automatically displayed in dry-run mode, so you don't need the `--suggest-manual-commands` flag anymore.
### Generating Models for Orphaned Tables
When orphaned tables are found, you can generate Django models for them:
```bash
python manage.py dbsync --dry-run --generate-orphaned-models
```
This creates a Python file with Django models for all orphaned tables:
```python
# Django Models for Orphaned Tables
# Generated by django-dbsync on 2025-07-28 10:34:31
#
# Instructions:
# 1. Copy the models you want to keep to your Django app's models.py
# 2. Remove the 'managed = False' line if you want Django to manage the table
# 3. Update the Meta class as needed
# 4. Run 'python manage.py makemigrations' and 'python manage.py migrate'
from django.db import models
# Table: publisher
# Rows: 0, Size: 0.02 MB
class Publisher(models.Model):
"""
Auto-generated model for table 'publisher'
Generated by django-dbsync
"""
name = models.CharField(max_length=100, null=False, blank=False)
website = models.CharField(max_length=200, null=False, blank=False)
created_at = models.DateTimeField(null=False, blank=False)
class Meta:
db_table = 'publisher'
managed = False # Django won't manage this table
def __str__(self):
return f'Publisher(id={self.id})'
```
**Benefits:**
- **Easy retention**: Copy models to keep orphaned tables
- **Auto-generated**: No manual model writing needed
- **Safe**: Uses `managed = False` by default
- **Complete**: Includes all field types and constraints
### Table Name Conflicts
Sometimes databases can have both lowercase and uppercase versions of the same table name (e.g., `publisher` and `Publisher`). This can cause issues with table renaming operations.
To check for table name conflicts:
```bash
python manage.py dbcheck --check-name-conflicts
```
This will identify any tables that have case conflicts and provide guidance on how to resolve them.
**Example conflict scenario:**
- Database has both `publisher` and `Publisher` tables
- Django model expects `Publisher`
- The tool will detect this conflict and avoid the rename operation
- You'll need to manually resolve the conflict before syncing
## Example Output
```
Django Database Sync v1.0.2
==================================================
Starting synchronization...
✅ myapp.User
- Added column 'phone' to 'users'
- Modified column 'email' in 'users'
⚠️ myapp.Order
- Table 'orders_old' renamed to 'orders'
- Extra column 'temp_field' in 'orders' (kept)
❌ myapp.Product
- Failed to add column 'description'
⚠️ Orphaned Tables (2 found):
🗃️ old_backup_table - 1,247 rows, 2.45 MB
🗃️ temp_migration - 0 rows, 0.01 MB
Synchronization completed!
```
## Contributing
1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass
5. Submit a pull request
## Support
- GitHub Issues: https://github.com/Lovedazzell/db_sync/issues
- Documentation: https://django-dbsync.readthedocs.io/
- Email: lovepreetdazzell@gmail.com
Raw data
{
"_id": null,
"home_page": "https://github.com/Lovedazzell/django-dbsync",
"name": "django-dbsync",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "django database sync migration schema synchronization",
"author": "love dazzell",
"author_email": "lovepreetdazzell@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/bb/2b/59939ad603e0b2295377386489b2dd8dd320f8ee580e0bc5f613f0ffc34f/django_dbsync-1.1.5.tar.gz",
"platform": "any",
"description": "# Django DB Sync\r\n\r\n**Django DB Sync** is a powerful, intelligent database synchronization tool designed specifically for Django projects. It automatically detects and resolves schema differences between your Django models and database tables, eliminating the need for manual migrations in many scenarios.\r\n\r\n## Why Django DB Sync?\r\n\r\nUnlike Django's built-in migrations system, Django DB Sync works by analyzing the current state of your database and comparing it directly with your Django models. This approach is particularly valuable when:\r\n\r\n- Working with legacy databases that weren't created with Django\r\n- Dealing with databases that have been manually modified\r\n- Syncing schemas across different environments\r\n- Cleaning up orphaned tables and unused columns\r\n- Requiring granular control over database schema changes\r\n\r\n## Key Features\r\n\r\n- Multi-Database Support: Works seamlessly with MySQL, PostgreSQL, SQLite, and Oracle\r\n- Intelligent Schema Detection: Automatically compares Django models with actual database schema\r\n- Safety First: Built-in dry-run mode and backup creation before making changes\r\n- Comprehensive Reporting: Detailed HTML reports and colored terminal output\r\n- Orphaned Table Management: Identifies and manages tables without corresponding Django models\r\n- Smart Field Mapping: Intelligent mapping between Django field types and database column types\r\n- Constraint Handling: Proper management of foreign keys, indexes, and other constraints\r\n- Beautiful Interface: Colored terminal output with progress indicators and status updates\r\n\r\n## \ud83d\udee0\ufe0f Core Capabilities\r\n\r\n1. **Table Management**: Create, rename, and manage database tables\r\n2. **Column Operations**: Add, modify, and remove columns with proper type mapping\r\n3. **Constraint Handling**: Manage foreign keys, unique constraints, and indexes\r\n4. **Data Preservation**: Safely modify schemas while preserving existing data\r\n5. **Backup Integration**: Automatic backup creation before destructive operations\r\n6. **Detailed Reporting**: Comprehensive logs and HTML reports of all operations\r\n\r\n## \ud83d\udd27 Technical Highlights\r\n\r\n- **Database Agnostic**: Works with all major database backends supported by Django\r\n- **Type-Safe Operations**: Intelligent field type mapping and validation\r\n- **Transaction Safety**: All operations wrapped in database transactions\r\n- **Extensible Architecture**: Modular design for easy customization and extension\r\n- **Production Ready**: Thoroughly tested with comprehensive error handling\r\n\r\n## Installation\r\n\r\n```bash\r\npip install django-dbsync\r\n```\r\n\r\nAdd to your Django settings:\r\n\r\n```python\r\nINSTALLED_APPS = [\r\n # ... other apps\r\n 'django_dbsync',\r\n]\r\n\r\n# Optional: Configure django-dbsync\r\nDJANGO_DBSYNC = {\r\n 'DEFAULT_DATABASE': 'default',\r\n 'AUTO_CREATE_TABLES': True,\r\n 'AUTO_ADD_COLUMNS': True,\r\n 'AUTO_DROP_COLUMNS': False,\r\n 'EXCLUDE_APPS': ['admin', 'contenttypes', 'sessions'],\r\n 'COLORED_OUTPUT': True,\r\n 'SHOW_ORPHANED_TABLES': True,\r\n}\r\n```\r\n\r\n## Usage\r\n\r\n### Basic Sync\r\n```bash\r\n# Basic sync commands\r\npython manage.py dbsync # Sync default database\r\npython manage.py dbsync --database=secondary # Sync specific database\r\npython manage.py dbsync --dry-run # Show changes without applying\r\npython manage.py dbsync --auto-approve # Auto-approve all changes (dangerous!)\r\npython manage.py dbsync --drop-orphaned # Drop orphaned tables (dangerous!)\r\n```\r\n\r\n### Advanced Options\r\n```bash\r\n# App management\r\npython manage.py dbsync --exclude-apps admin auth contenttypes # Exclude specific apps\r\npython manage.py dbsync --include-apps myapp otherapp # Include only specific apps\r\n\r\n# Backup and reporting\r\npython manage.py dbsync --backup # Create backup before sync\r\npython manage.py dbsync --report json # Generate JSON report\r\npython manage.py dbsync --report html # Generate HTML report\r\npython manage.py dbsync --report both # Generate both JSON and HTML reports\r\n\r\n# Safety checks\r\npython manage.py dbsync --drop-orphaned --dry-run # Check what would be dropped\r\npython manage.py dbsync --suggest-manual-commands # Show manual SQL commands\r\npython manage.py dbsync --generate-orphaned-models # Generate models for orphaned tables\r\n```\r\n\r\n### Database Check\r\n```bash\r\n# Database checking commands\r\npython manage.py dbcheck # Check database schema\r\npython manage.py dbcheck --database=secondary # Check specific database\r\npython manage.py dbcheck --table=my_table # Show specific table details\r\npython manage.py dbcheck --compare-models # Compare with Django models\r\npython manage.py dbcheck --check-case-mismatches # Check for case mismatches\r\npython manage.py dbcheck --check-name-conflicts # Check for name conflicts\r\npython manage.py dbcheck --verbose # Show detailed information\r\npython manage.py dbcheck --fix # Attempt to fix issues automatically\r\npython manage.py dbcheck --include-apps=app1,app2 # Check specific apps only\r\npython manage.py dbcheck --include-tables=table1,table2 # Check specific tables only\r\n```\r\n\r\n## Configuration\r\n\r\n### Database Settings\r\n\r\nSupport for multiple databases: \r\n\r\n```python\r\nDATABASES = {\r\n 'default': {\r\n 'ENGINE': 'django.db.backends.mysql',\r\n 'NAME': 'main_db',\r\n 'USER': 'user',\r\n 'PASSWORD': 'pass',\r\n 'HOST': 'localhost',\r\n },\r\n 'analytics': {\r\n 'ENGINE': 'django.db.backends.postgresql',\r\n 'NAME': 'analytics_db',\r\n 'USER': 'user',\r\n 'PASSWORD': 'pass',\r\n 'HOST': 'localhost',\r\n }\r\n}\r\n\r\n# Sync configuration per database\r\nDJANGO_DBSYNC = {\r\n 'CUSTOM_DATABASES': {\r\n 'analytics': {\r\n 'AUTO_DROP_COLUMNS': True,\r\n 'EXCLUDE_APPS': ['admin'],\r\n }\r\n }\r\n}\r\n```\r\n\r\n### Complete Settings Reference\r\n\r\n```python\r\nDJANGO_DBSYNC = {\r\n # Database configuration\r\n 'DEFAULT_DATABASE': 'default',\r\n 'CUSTOM_DATABASES': None,\r\n \r\n # Sync behavior\r\n 'AUTO_CREATE_TABLES': True,\r\n 'AUTO_ADD_COLUMNS': True,\r\n 'AUTO_DROP_COLUMNS': False,\r\n 'AUTO_RENAME_TABLES': False,\r\n 'AUTO_FIX_TABLE_CASE': True, # Automatically fix table name case mismatches\r\n 'BACKUP_BEFORE_SYNC': True,\r\n \r\n # Output settings\r\n 'COLORED_OUTPUT': True,\r\n 'VERBOSE_LOGGING': True,\r\n 'SHOW_PROGRESS': True,\r\n \r\n # Safety settings\r\n 'EXCLUDE_APPS': ['sessions', 'admin', 'contenttypes'],\r\n 'EXCLUDE_TABLES': [],\r\n 'DRY_RUN_MODE': False,\r\n \r\n # Report settings\r\n 'GENERATE_HTML_REPORT': False,\r\n 'REPORT_OUTPUT_DIR': 'dbsync_reports/',\r\n 'SHOW_ORPHANED_TABLES': True,\r\n}\r\n```\r\n\r\n## Supported Field Types\r\n\r\nAll Django field types are supported across MySQL, PostgreSQL, and SQLite:\r\n\r\n- AutoField, BigAutoField\r\n- CharField, TextField, EmailField, URLField, SlugField\r\n- IntegerField, BigIntegerField, SmallIntegerField\r\n- PositiveIntegerField, PositiveSmallIntegerField\r\n- FloatField, DecimalField\r\n- BooleanField\r\n- DateField, DateTimeField, TimeField\r\n- UUIDField, JSONField\r\n- FileField, ImageField\r\n- ForeignKey, OneToOneField, ManyToManyField\r\n\r\n## Table Name Case Handling\r\n\r\nDjango-dbsync automatically detects and handles table name case mismatches between your Django models and the database. This is common when:\r\n\r\n- Your model has `db_table = 'abcd'` but the database table is `ABCD`\r\n- Database systems are case-insensitive but Django models use specific casing\r\n- Tables were created with different naming conventions\r\n\r\n### Automatic Case Fixing\r\n\r\nBy default, the tool will automatically fix case-only mismatches (when `AUTO_FIX_TABLE_CASE = True`):\r\n\r\n```bash\r\n# The tool will automatically rename 'ABCD' to 'abcd'\r\npython manage.py dbsync\r\n```\r\n\r\n### Manual Control\r\n\r\nTo disable automatic case fixing and get prompted for each rename:\r\n\r\n```python\r\nDJANGO_DBSYNC = {\r\n 'AUTO_FIX_TABLE_CASE': False,\r\n}\r\n```\r\n\r\n### Checking for Case Mismatches\r\n\r\nTo check for table name case mismatches without fixing them:\r\n\r\n```bash\r\npython manage.py dbcheck --check-case-mismatches\r\n```\r\n\r\nThis will show you all mismatches found and provide guidance on how to fix them.\r\n\r\n### Manual SQL Commands for Table Renames\r\n\r\nWhen table name conflicts are detected, you can get manual SQL commands to resolve them:\r\n\r\n```bash\r\npython manage.py dbsync --dry-run --suggest-manual-commands\r\n```\r\n\r\nThis will show you the exact SQL commands needed to rename tables manually:\r\n\r\n```\r\n============================================================\r\n\ud83d\udd27 MANUAL SQL COMMANDS FOR TABLE RENAMES\r\n============================================================\r\nThe following SQL commands can be run manually to rename tables:\r\n\r\n1. MySQL case-insensitive conflict resolution: 'publisher_detail2' \u2192 'Publisher_detail2'\r\n SQL: RENAME TABLE `publisher_detail2` TO `Publisher_detail2`;\r\n\r\n\ud83d\udca1 Instructions:\r\n 1. Connect to your database using your preferred SQL client\r\n 2. Run the commands above one by one\r\n 3. Run 'python manage.py dbsync' again to complete the sync\r\n 4. Make sure to backup your database before running these commands!\r\n```\r\n\r\nThis gives you full control over table renaming operations while ensuring data safety.\r\n\r\n**Note:** Manual SQL commands are automatically displayed in dry-run mode, so you don't need the `--suggest-manual-commands` flag anymore.\r\n\r\n### Generating Models for Orphaned Tables\r\n\r\nWhen orphaned tables are found, you can generate Django models for them:\r\n\r\n```bash\r\npython manage.py dbsync --dry-run --generate-orphaned-models\r\n```\r\n\r\nThis creates a Python file with Django models for all orphaned tables:\r\n\r\n```python\r\n# Django Models for Orphaned Tables\r\n# Generated by django-dbsync on 2025-07-28 10:34:31\r\n# \r\n# Instructions:\r\n# 1. Copy the models you want to keep to your Django app's models.py\r\n# 2. Remove the 'managed = False' line if you want Django to manage the table\r\n# 3. Update the Meta class as needed\r\n# 4. Run 'python manage.py makemigrations' and 'python manage.py migrate'\r\n\r\nfrom django.db import models\r\n\r\n# Table: publisher\r\n# Rows: 0, Size: 0.02 MB\r\nclass Publisher(models.Model):\r\n \"\"\"\r\n Auto-generated model for table 'publisher'\r\n Generated by django-dbsync\r\n \"\"\"\r\n name = models.CharField(max_length=100, null=False, blank=False)\r\n website = models.CharField(max_length=200, null=False, blank=False)\r\n created_at = models.DateTimeField(null=False, blank=False)\r\n\r\n class Meta:\r\n db_table = 'publisher'\r\n managed = False # Django won't manage this table\r\n\r\n def __str__(self):\r\n return f'Publisher(id={self.id})'\r\n```\r\n\r\n**Benefits:**\r\n- **Easy retention**: Copy models to keep orphaned tables\r\n- **Auto-generated**: No manual model writing needed\r\n- **Safe**: Uses `managed = False` by default\r\n- **Complete**: Includes all field types and constraints\r\n\r\n### Table Name Conflicts\r\n\r\nSometimes databases can have both lowercase and uppercase versions of the same table name (e.g., `publisher` and `Publisher`). This can cause issues with table renaming operations.\r\n\r\nTo check for table name conflicts:\r\n\r\n```bash\r\npython manage.py dbcheck --check-name-conflicts\r\n```\r\n\r\nThis will identify any tables that have case conflicts and provide guidance on how to resolve them.\r\n\r\n**Example conflict scenario:**\r\n- Database has both `publisher` and `Publisher` tables\r\n- Django model expects `Publisher` \r\n- The tool will detect this conflict and avoid the rename operation\r\n- You'll need to manually resolve the conflict before syncing\r\n\r\n## Example Output\r\n\r\n```\r\nDjango Database Sync v1.0.2\r\n==================================================\r\nStarting synchronization...\r\n\r\n\u2705 myapp.User\r\n - Added column 'phone' to 'users'\r\n - Modified column 'email' in 'users'\r\n\r\n\u26a0\ufe0f myapp.Order\r\n - Table 'orders_old' renamed to 'orders'\r\n - Extra column 'temp_field' in 'orders' (kept)\r\n\r\n\u274c myapp.Product\r\n - Failed to add column 'description'\r\n\r\n\u26a0\ufe0f Orphaned Tables (2 found):\r\n\ud83d\uddc3\ufe0f old_backup_table - 1,247 rows, 2.45 MB\r\n\ud83d\uddc3\ufe0f temp_migration - 0 rows, 0.01 MB\r\n\r\nSynchronization completed!\r\n```\r\n\r\n## Contributing\r\n\r\n1. Fork the repository\r\n2. Create a feature branch\r\n3. Add tests for new functionality\r\n4. Ensure all tests pass\r\n5. Submit a pull request\r\n\r\n\r\n## Support\r\n\r\n- GitHub Issues: https://github.com/Lovedazzell/db_sync/issues\r\n- Documentation: https://django-dbsync.readthedocs.io/\r\n- Email: lovepreetdazzell@gmail.com\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Intelligent database synchronization tool for Django projects",
"version": "1.1.5",
"project_urls": {
"Bug Tracker": "https://github.com/Lovedazzell/django-dbsync/issues",
"Documentation": "https://django-dbsync.readthedocs.io/",
"Homepage": "https://github.com/Lovedazzell/django-dbsync",
"Source Code": "https://github.com/Lovedazzell/django-dbsync"
},
"split_keywords": [
"django",
"database",
"sync",
"migration",
"schema",
"synchronization"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a3b32b11c040dd15f2b51b13c820ac064ac9459c4148a401734c96f86b84b37b",
"md5": "dbccf06dc2a18fed136134df1b075d02",
"sha256": "8b01736abc78c379373352700bc6454db5c2080b20ea1e5b41f6234c3fabc99a"
},
"downloads": -1,
"filename": "django_dbsync-1.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dbccf06dc2a18fed136134df1b075d02",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 45696,
"upload_time": "2025-07-29T08:22:35",
"upload_time_iso_8601": "2025-07-29T08:22:35.801749Z",
"url": "https://files.pythonhosted.org/packages/a3/b3/2b11c040dd15f2b51b13c820ac064ac9459c4148a401734c96f86b84b37b/django_dbsync-1.1.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bb2b59939ad603e0b2295377386489b2dd8dd320f8ee580e0bc5f613f0ffc34f",
"md5": "c510310621c9dccc51e37b1b675ce47c",
"sha256": "7f0e0db515e9e69a87cf7725d02dee052136093be46d3ccf8c06e4a8584bee38"
},
"downloads": -1,
"filename": "django_dbsync-1.1.5.tar.gz",
"has_sig": false,
"md5_digest": "c510310621c9dccc51e37b1b675ce47c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 43115,
"upload_time": "2025-07-29T08:22:37",
"upload_time_iso_8601": "2025-07-29T08:22:37.008026Z",
"url": "https://files.pythonhosted.org/packages/bb/2b/59939ad603e0b2295377386489b2dd8dd320f8ee580e0bc5f613f0ffc34f/django_dbsync-1.1.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-29 08:22:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Lovedazzell",
"github_project": "django-dbsync",
"github_not_found": true,
"lcname": "django-dbsync"
}