首先告知 Django,你正在使用至少2个数据库服务。通过 DATABASES
配置来将指定的数据库链接放入一个字典,以此来映射数据库别名,数据库别名是在整个Django中引用特定数据库的一种方式。
可以选择任意的数据库别名,但是``default
`` 别名具有特殊意义。当没有数据库指定选择的时候,Django 使用带有 default
别名的数据库。
接下来一个 settings.py
片段,定义了2个数据库——默认的 PostgreSQL 数据库和名叫 users
的 MySQL 数据库。
DATABASES = {
"default": {
"NAME": "app_data",
"ENGINE": "django.db.backends.postgresql",
"USER": "postgres_user",
"PASSWORD": "s3krit"
},
"users": {
"NAME": "user_data",
"ENGINE": "django.db.backends.mysql",
"USER": "mysql_user",
"PASSWORD": "priv4te"
}
}
如果 default
数据库的设计在项目中没有使用,那么你需要特别注意始终指定你所使用的数据库。Django 需要定义 default
数据库,但如果没有使用数据库的话,参数字典可以置空。这样,你必须为所有的模型,包括你所使用的任何 contrib
和第三方 app 设置 DATABASE_ROUTERS
,所以不会有任何查询路由到默认数据库。下面示例来讲在默认数据库为空的情况下,如何定义两个非默认数据库:
DATABASES = {
"default": {},
"users": {
"NAME": "user_data",
"ENGINE": "django.db.backends.mysql",
"USER": "mysql_user",
"PASSWORD": "superS3cret"
},
"customers": {
"NAME": "customer_data",
"ENGINE": "django.db.backends.mysql",
"USER": "mysql_cust",
"PASSWORD": "veryPriv@ate"
}
}
如果您尝试访问您尚未在 DATABASES
设置中定义的数据库,Django 将引发 django.utils.connection.ConnectionDoesNotExist
异常。
要定义一对一关联,使用 OneToOneField。在本例中,一个 Place 是一个 Restaurant:from django.db import modelscla...
中间件支持同步和异步请求的任意组合。如果Django不能同时支持它们,它会调整请求来适应中间件的需求,但会有性能损失。默认情况...
跨数据库关系Django 当前不提供对跨多数据库的外键或多对多关系任何支持。如果已经使用路由来分隔模型到不同数据库,那么通过这...
因为大部分的标准 QuerySet 方法能直接从 Manager 访问,这个实例仅适用于你在自定义 QuerySet 中定义了额外方法,...
本教程从教程第 5 部分结束的地方开始。我们已经建立了一个经过测试的网络投票应用程序,现在我们将添加一个样式表和一个图像。...