Skip to content

Instantly share code, notes, and snippets.

@yann2192
Created October 23, 2012 07:43
Show Gist options
  • Save yann2192/3937495 to your computer and use it in GitHub Desktop.
Save yann2192/3937495 to your computer and use it in GitHub Desktop.
Revert database to django models
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import random
from django.conf import settings
from django.core.management import setup_environ
s = {
"DATABASE_ENGINE": "django.db.backends.postgresql_psycopg2",
"DATABASE_NAME": "database_name",
"DATABASE_USER": "user",
"DATABASE_PASSWORD": "password",
"DATABASE_HOST": "localhost",
"DATABASE_PORT": "5432",
}
my = sys.modules[__name__]
sys.modules['mydjangoorm.py'] = my
settings.configure(**s)
setup_environ(settings)
settings.DATABASES['default']['ENGINE'] = s['DATABASE_ENGINE']
settings.DATABASES['default']['NAME'] = s['DATABASE_NAME']
settings.DATABASES['default']['USER'] = s['DATABASE_USER']
settings.DATABASES['default']['PASSWORD'] = s['DATABASE_PASSWORD']
settings.DATABASES['default']['HOST'] = s['DATABASE_HOST']
settings.DATABASES['default']['PORT'] = s['DATABASE_PORT']
from django.db import models
from django.core.management.commands import inspectdb
__name__ = 'mydjangoorm.py'
x = inspectdb.Command().handle_inspection({'database':"default"})
buff = ""
for i in x:
buff += i+"\n"
print buff
buff = buff.split('\n\n')[2:]
fails = []
while True:
for i in buff:
try:
exec i
except NameError: fails.append(i)
if len(fails) > 0:
buff = fails
random.shuffle(buff)
fails = []
else: break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment