在 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