28

I basically want to take an existing mysql database structure created and used by a php app (codeigniter framework) and reverse engineer it to a django app. is there some tool to do this? south migrations maybe?

Rasiel
  • 2,823
  • 6
  • 31
  • 37

1 Answers1

60

Create a project, and point your settings @ your database

Then run

./manage.py inspectdb

This will print out a python models file for the DB you're pointing at

You can output this to a file by doing something like

./manage.py inspectdb > models.py

And then you can move the file to the most suitable location, and edit it as needed.

Mez
  • 24,430
  • 14
  • 71
  • 93
  • 2
    Good answer. Chapter 18 of the Django Book has further details on using inspectdb to integrate existing databases - http://djangobook.com/en/2.0/chapter18/ – Alasdair Oct 09 '09 at 21:26
  • 1
    Great this is what i wanted exactly!, also going to generate the er diagram based on this using graphviz & django_extensions – Rasiel Oct 09 '09 at 22:06
  • 2
    Make sure you check the generated `model.py` carefully! In particular lengths of `CharField`s and missing `ForeignKey`s was the problem cases last time I used it. It saved many hours of making the `model.py` by hand though. – Nick Craig-Wood Oct 10 '09 at 13:34