blog: Quick Django Tip: Safe and easy database data conversion

Posted on 11 Dec 2008 under

One thing that you may find yourself doing is migrating your old projects to Django. Sometimes, this can be fairly complex but if it’s a case of moving data from an old database to your Django models it’s pretty simple.

In this example, I am taking data from a mySQL database that held data for a PHP application and converting it to Django models. What I do is run the data through a ModelForm so that I can test for validation:


# We use the MySQLdb module to connect to a different database to get our old data.

db = MySQLdb.connect(user="me", passwd="password", db="mydatabase")

c = db.cursor(DictCursor)</code>



c.execute("SELECT field1, field2, FROM some_table")

rows = c.fetchall()



for r in rows:

     form = AddItemForm(r)

     if form.is_valid():

         obj = Item(**form.cleaned_data)

         obj.save()

     else:

         # You probably want to log here instead of using print

         # form.errors will contain the errors, which you can log as well.

         print("Could not add Item %s" % r['field1'])

And that’s it! This is of course a very crude and simple example but it gets the job done and I find it much better then simply passing in data to my model. With the form, it allows me to catch the errors that the end-user may hit when they actually use the form in the application so it’s a win-win.

Others Posts You May Enjoy

Thanks for reading. How about leaving a comment?

blog comments powered by Disqus
Fork me on GitHub