在 Django 中,使用多个数据库可以通过配置多个数据库连接来实现。默认情况下,Django 会使用一个默认数据库连接,但你可以定义和使用额外的数据库连接,以满足不同数据存储需求。
首先,让我们了解默认数据库的概念与作用。默认数据库是在 Django 项目中默认使用的数据库连接。它通常用于存储主要的应用数据,例如用户信息、文章、评论等。在 Django 项目的配置文件(settings.py
)中,你可以找到默认数据库连接的配置信息。
接下来,我们将介绍如何配置多个数据库连接,并在代码示例中展示如何使用它们。
在 settings.py
中,你需要配置数据库连接信息。每个数据库连接需要指定一个唯一的名称(通常用字符串表示),并包含必要的数据库配置,如数据库引擎、数据库名、用户名、密码等。
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'default_db', # 数据库名
'USER': 'db_user', # 数据库用户名
'PASSWORD': 'db_password', # 数据库密码
'HOST': 'localhost', # 数据库主机地址
'PORT': '', # 数据库端口(如果需要特定端口,可以填写)
},
'second_db': {
'ENGINE': 'django.db.backends.sqlite3', # 数据库引擎
'NAME': BASE_DIR / 'second_db.sqlite3', # 数据库文件路径
},
# 可以添加更多数据库连接配置
}
在上面的配置中,我们定义了两个数据库连接: default
和 second_db
。一个使用 MySQL 作为数据库引擎,另一个使用 SQLite3。
一旦你配置了多个数据库连接,你可以在 Django 的代码中根据需要选择性地使用它们。
默认数据库是 Django 项目中默认使用的数据库连接,所以你可以像以前一样使用它。例如,使用 Django 的 ORM 进行数据库操作:
# models.py
from django.db import models
class UserProfile(models.Model):
username = models.CharField(max_length=100)
email = models.EmailField()
# 使用默认数据库连接保存数据
user = UserProfile(username='john_doe', email='john@example.com')
user.save()
如果你想在某个模型或查询中使用非默认数据库,可以使用 using()
方法指定数据库连接名称。
# models.py
from django.db import models
class SecondDBModel(models.Model):
# 定义使用非默认数据库的模型
...
# 使用非默认数据库连接保存数据
second_db_instance = SecondDBModel(...)
second_db_instance.save(using='second_db')
在某些情况下,你可能需要执行原生 SQL 查询。你可以使用 Django 的数据库连接来执行原生 SQL 语句,并在执行时指定数据库连接。
from django.db import connections
# 使用默认数据库执行原生SQL查询
with connections['default'].cursor() as cursor:
cursor.execute("SELECT * FROM my_table")
# 使用非默认数据库执行原生SQL查询
with connections['second_db'].cursor() as cursor:
cursor.execute("SELECT * FROM my_other_table")
这样,你就可以根据需要在 Django 项目中配置和使用多个数据库连接。无论是默认数据库还是非默认数据库,Django 的 ORM 和数据库连接 API 都能满足你的数据存储需求。