Django Mysql迁移到PostgreSQL

1、安装PostgreSQL
2、在settings里配置一个PostgreSQL的配置节:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'wodedata',
        'USER': 'root',
        'PASSWORD': 'wodemima',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    },
    'postgresql': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'wodedata',
        'USER': 'psql',
        'PASSWORD': 'wodemima',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

3. 生成数据结构

python manage.py migrate --database=postgresql

4. 进入PostgreSQL, 清除初始化数据。


delete from auth_permission;
delete from django_content_type;
delete from django_site;
delete from django_migrations;

5. 导出数据.


python manage.py  dumpdata --all > wodedata2postgresql.json

6.导入数据.


python manage.py loaddata wodedata2postgresql.json --database=postgresql


7.在settings里把数据库默认引擎改为postgresql(最好把原来的mysql配置删掉,否则你更新model的时候会去检查)


DATABASES = {
    'mysql': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'wodedata',
        'USER': 'root',
        'PASSWORD': 'wodemima',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    },
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'wodedata',
        'USER': 'psql',
        'PASSWORD': 'wodemima',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}
老楠 :
备份命令:pg_dump -U postgres -d myDBname -f dump.sql
老楠 :
还原命令:psql -d newDBname -U postgres -f dump.sql
For example, "name@something.com". If someone replies to you it will be via email.
For example, "http://someaddress.com"