Django有多个数据库,Django最初是否连接到所有数据库?

Dhr*_*hak 4 python mysql django

MySQL的样本数据库配置:

DATABASES = {
    'auth_db': {
        'NAME': 'auth_db',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'swordfish',
    },
    'master': {
        'NAME': 'master',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'spam',
    },
    'slave1': {
        'NAME': 'slave1',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'eggs',
    },
    'slave2': {
        'NAME': 'slave2',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'bacon',
    },
}
Run Code Online (Sandbox Code Playgroud)

即使某些数据库根本没有使用,Django最初是否也会连接到所有这些数据库?例如。

对多个数据库使用原始游标

如果您使用多个数据库,则可以使用django.db.connections获取特定数据库的连接(和游标)。django.db.connections是一个类似于字典的对象,它允许您使用其别名检索特定的连接:

从django.db导入连接

cursor = connections ['my_db_alias']。cursor()

所以在这里,1.连接对象包含已经建立的连接?还是在发出游标请求时连接?2.是否可以更改此默认行为并按需建立连接(所有查询均为原始查询,而所有数据库均为MySQL)?

Aus*_*ips 5

首次访问时,使用会与请求的数据库建立持久连接django.db.connections。即,仅在首次使用时才对连接进行延迟评估和连接。相关代码django/db/__init__.pyConnectionHandler该类中。

查询后,连接不会自动删除,但是连接将一直保持到断开连接为止。如果存在DATABASES从不使用的条目,则不会建立与这些数据库的连接。