欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Migrating django app from MySQL to Postgres_MySQL

程序员文章站 2022-03-29 22:36:51
...
Django
By :manjunath

In this tutorial, we will take a django app backed by MySQL and will convert MySQL database to postgres database. This is useful if we are deploying our app toHerokubecauseHerokuuses standardPostgres

Prerequisites:

  • We assume that you have a running django app with MySQL as a database.
  • Also, your app is running on virtualenv.

Converting MySQL to Postgres:

Let's assume that you have a django app running with MySQL and you want to convert this to Postgres.

1) Install dependenicies:

$ pip install psycopg2$ pip install py-mysql2pgsql

2) Create Postgres database:

postgres@agiliq-Inspiron-N5010:~$ psqlpsql (9.1.11)Type "help" for help.postgres=# create database my_database;CREATE DATABASEpostgres=#

3) Run:

$ py-mysql2pgsql

At initial run this command creates a file namedmysql2pgsql.ymlhaving the below info:

mysql:hostname: localhostport: 3306socket: /tmp/mysql.sockusername: foopassword: bardatabase: your_database_namecompress: falsedestination:postgres:hostname: localhostport: 5432username: foopassword: bardatabase: your_database_name

Update the above configuration file with appropriate database credentials for both 'MySQL' andPostgres.

4) Run:

$ py-mysql2pgsql -v -f mysql2pgsql.yml

The above command will transfer the data fromMySQLdatabase toPostgres.

Note:

  • The above command may raise someIntegrityerrors, but no worries it can be fixed. :)
  • You can also include or exclude some tables check thisHere

5) Be sure to update your databasesettings.pyfile:

DATABASES = {"default": {	"ENGINE": "django.db.backends.postgresql_psycopg2",	"NAME": "your_database_name",	"USER": "your_username",	"PASSWORD": "your_password",	"HOST": "localhost",	"PORT": "5432",}}

6) Verify the correctness by adding some data to your existing database(Postgres).


You can read all ofmanjunath's post, andfollow manjunath on Twitter


Can we help you build amazing apps?Contact us today.