#!/usr/bin/env python
import sys,os
if len(sys.argv) != 2:
print 'Usage:\n\tpython %s [app_name]\n' % sys.argv[0]
sys.exit(-1)
def setup_django_app():
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
def dbize(value):
if value is None:
return 'NULL'
return("'" + str(value).replace("'","\\'") + "'")
def dump_app_db(app_name):
from django.db import models
__import__(app_name + '.models', {}, {}, [app_name])
for model in models.Model.__subclasses__():
table = model._meta.db_table
columns = [field.column for field in
model._meta.fields]
for object in model.objects.all():
values = [object.__dict__[column] for column
in columns]
csv_columns = ",".join(columns)
csv_values = ",".join([dbize(value) for value
in values])
print "INSERT INTO %s(%s) VALUES (%s);" %
(table,csv_columns,csv_values)
if __name__ == '__main__':
if len(sys.argv) != 2:
print 'Usage: \n\tpython %s [app_name]\n' %
sys.argv[0]
sys.exit(-1)
app_name = sys.argv[1]
setup_django_app()
dump_app_db(app_name)
the + is that you can move data between databases (like sqlites -
postgres) and you don't have to care about db encoding ;) (for non
latin-1 data).
... and ticket #2333 has a database dumping capability that will be
rolled into Django before version 1.0.
Yours,
Russ Magee %-)