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