How to migrate Django models from mysql to sqlite (or between any two database systems)?
-
13-10-2019 - |
Question
I have a Django deployment in production that uses MySQL.
I would like to do further development with SQLite, so I would like to import my existing data to an SQLite database. I
There is a shell script here to convert a general MySQL dump to SQLite, but it didn't work for me (apparently the general problem isn't easy).
I figured doing this using the Django models must be much easier. How would you do this? Does anyone have any script to do this?
Solution
use
manage.py dumpdata > your_file.json
to export your data from the production system (docs).
Then move the file on the development system and run
manage.py loaddata your_file.json
You can also put the file in your_app/fixtures folder with name "initial_data.json" and it will be automatically loaded when you run "manage.py syncdb" (docs).
OTHER TIPS
Have you tried using manage.py dumpdata > datadump
and then when the new database is set up correctly, use python manage.py loaddata datadump
?
If you have contenttypes in installed app
INSTALLED_APPS = (
'django.contrib.contenttypes',
)
Use script like what for copying you entry to new base:
from django.contrib.contenttypes.models import ContentType
def run():
def do(Table):
if Table is not None:
table_objects = Table.objects.all()
for i in table_objects:
i.save(using='slave')
ContentType.objects.using('slave').all().delete()
for i in ContentType.objects.all():
do(i.model_class())
See full manual here
Maybe give south a try: