Dumping a db using django db api

0 views
Skip to first unread message

Herman

unread,
Feb 14, 2007, 5:48:05 PM2/14/07
to Django users
Well I made a little script that dump the database content insert
statements of a django application, useful for creating the initial
data of an application. I don't know if this has been done or if it's
a feature of the many tools that django provides, but it have fun
making it.

#!/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)

rikl...@gmail.com

unread,
Feb 14, 2007, 6:04:03 PM2/14/07
to Django users
limodou made a script that dumps the data to django ORM format:
http://groups.google.com/group/django-users/browse_thread/thread/b7423a8944770ec/189c26faa9bd823c

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).

Russell Keith-Magee

unread,
Feb 14, 2007, 6:49:58 PM2/14/07
to django...@googlegroups.com
On 2/15/07, rikl...@gmail.com <rikl...@gmail.com> wrote:
>
> limodou made a script that dumps the data to django ORM format:
> http://groups.google.com/group/django-users/browse_thread/thread/b7423a8944770ec/189c26faa9bd823c

... and ticket #2333 has a database dumping capability that will be
rolled into Django before version 1.0.

Yours,
Russ Magee %-)

Reply all
Reply to author
Forward
0 new messages