在 Django 4.0 中,你可以定义多个数据库连接并在 settings.py 文件中进行配置。以下是一种在 Django 中定义多个数据库的方法:

在 settings.py 中定义多个数据库连接
# settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_default_db_name',
        'USER': 'your_default_db_user',
        'PASSWORD': 'your_default_db_password',
        'HOST': 'localhost',
        'PORT': '5432',
    },
    'secondary': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_secondary_db_name',
        'USER': 'your_secondary_db_user',
        'PASSWORD': 'your_secondary_db_password',
        'HOST': 'localhost',
        'PORT': '5432',
    },
    'other': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'path/to/your/sqlite/db.sqlite3',
    },
}

在上述配置中,我们定义了三个数据库连接:default、secondary 和 other。你可以根据需要添加或删除数据库连接,并根据实际情况配置每个数据库的连接信息。

在模型中使用多个数据库

在模型定义中指定数据库:
# models.py
from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=100)

class SecondaryModel(models.Model):
    name = models.CharField(max_length=100)
    
    class Meta:
        # 在 Meta 类中指定数据库
        database = 'secondary'

在上述示例中,MyModel 使用默认数据库 (default),而 SecondaryModel 使用 secondary 数据库。

在查询中使用多个数据库:
from django.db import connections

# 获取数据库连接
secondary_db_connection = connections['secondary']

# 在查询中使用另一个数据库
with secondary_db_connection.cursor() as cursor:
    cursor.execute('SELECT * FROM myapp_secondarymodel')
    results = cursor.fetchall()

在这个例子中,我们获取了名为 secondary 的数据库连接,并使用该连接执行原始 SQL 查询。

请注意,对于使用 Django ORM 进行查询的情况,Django 会默认使用默认数据库。如果你要在查询中使用其他数据库,你可能需要考虑使用 using 方法:
# 使用 ORM 查询
MyModel.objects.using('secondary').filter(name='example')

这样,你可以在需要时轻松地切换数据库连接,以适应你的应用程序的不同需求。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7177/Django