Django从多个数据库读取和写入

时间:2018-10-15 09:27:51

标签: python sql-server django postgresql

大家好,我正在django中开发一个Web应用程序,并且正在使用postgresql数据库。我还必须能够从另一个使用sqlserver数据库的应用程序中获取一些数据。我尝试获取的表包含大量数据,因此使用直接链接也许并不明智。关于此问题,哪种方法最好?我可以使用sql-odbc连接获取数据吗,还可以如何填充表,比如说我创建了一个本地表,并计划将数据从sql迁移到postgresql。想了解您如何处理此问题以及您的经历。谢谢!

1 个答案:

答案 0 :(得分:3)

在您的settings.py中编辑此代码(适用于多个数据库)

rollback

应用迁移命令:

用于默认数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'django',
        'USER': 'postgres',
        'PASSWORD': '12345678',
        'HOST': 'localhost',
        'PORT': '5432',
    },
    'connection_other_db': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mi_db',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

对于其他数据库(connection_other_db)

$ ./manage.py migrate

在您看来, 要使用ORM,请使用以下命令:

$ ./manage.py migrate --database=connection_other_db

用于创建对象:

Mi_Model.objects.using('connection_other_db').all() # For mysql database
Mi_Model.objects.all() # For default database (postgresql)

s = Mi_Model()
s._state.adding = False
s._state.db = 'connection_other_db'
s.field_1 = 'A value'
s.save()

用于使用交易:

s = Mi_Model.objects.using('connection_other_db').create(
   field_1='A value'
   # ....
)

用于使用光标

with transaction.atomic(using='connection_other_db'):
   # Your code here

Django文档: https://docs.djangoproject.com/es/2.1/topics/db/multi-db/