Py学习  »  Django

Django如何连接多个数据库?

saurabh Nema • 6 年前 • 2312 次点击  

我想连接到Django中的多个数据库,并在视图中显示每个表中选定的记录。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53742
文章 [ 3 ]  |  最新文章 6 年前
RIYAJ MULLA
Reply   •   1 楼
RIYAJ MULLA    6 年前

不必每次都创建新的连接,您可以连接到服务器并创建一个原始查询来跨多个数据库选择数据并创建所需数据的视图,如下例所示

from django.db import connection
cursor = connection.cursor()
cursor.execute('CREATE VIEW vCombinedRecords AS
SELECT * FROM DB1.dbo.MyTable
UNION ALL
SELECT * FROM DB2.dbo.MyTable')

上面的方法可以更快地建立到多个数据库的新连接

干杯!!

funnydman
Reply   •   2 楼
funnydman    6 年前

怎么 documentations 描写:

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'
    }
}

然后指定从哪一个检索数据:

persons = Person.objects.using('default').all()
# or
persons = Person.objects.using('users').all()  
amit
Reply   •   3 楼
amit    6 年前

django支持多个数据库

DATABASES = {
  'default': {
     'NAME': 'dbname',
     'ENGINE': 'django.db.backends.postgresql',
     'USER': 'psqluser',
     'PASSWORD': 'password'
  },
  'users': {
      'NAME': 'dbname1',
      'ENGINE': 'django.db.backends.mysql',
      'USER': 'mysqluser',
      'PASSWORD': 'yourpassword'
  }
}

您可以按照以下方式使用迁移

./manage.py migrate --database=users

class Model:
   name = models.TextField(max_length=100)
   description = models.TextField(max_length=200)
   units = models.TextField(max_length=500)

   class Meta:
       app_label = 'users'

更多的资源你可以访问这个 link