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

2024-09-29 21:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我正在django开发一个web应用程序,我使用的是postgresql数据库。我还必须能够从另一个使用sqlserver数据库的应用程序中获取一些数据。我试图得到的表有很多数据,所以使用直接链接可能是不明智的。对于这个问题,哪种方法是最好的?我可以使用sqlodbc连接来获取数据吗?也可以怎样填充表,比如我创建一个本地表并将数据从sql迁移到postgresql计划。想了解一下你是如何处理这个问题的,以及你的经历。谢谢您!在


Tags: 数据django方法web数据库应用程序sql链接
1条回答
网友
1楼 · 发布于 2024-09-29 21:36:41

在你的设置.py编辑此代码(对于多个数据库)

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',
    }
}

应用迁移命令:

对于默认数据库

^{pr2}$

对于其他数据库(连接其他数据库)

^{3}$

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

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

使用光标

with connections['connection_other_db'].cursor() as cursor:
   cursor.execute('your query')

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

相关问题 更多 >

    热门问题