【发布时间】:2019-06-09 06:02:53
【问题描述】:
我有一个适用于多个数据库的 Django 应用程序,但在尝试专门从 (testdb2) 数据库读取数据时遇到问题。
我知道您可以使用关键字 (Using) 选择要读取数据的数据库,但这不起作用。结果是它总是试图从 (testdb) 读取数据。
这是(Settings.py)中数据库的代码:
DATABASES = {
'default': {
'NAME': 'testdb',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'host',
'PORT': 'port',
},
'users': {
'NAME': 'testdb2',
'ENGINE': 'sql_server.pyodbc',
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'host',
'PORT': 'port',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
这是 (Views.py) 的代码:
from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer
# Create your views here.
class MyModelView(viewsets.ModelViewSet):
queryset = MyModel.objects.using('users').all()
serializer_class = MyModelSerializer
这是 (Models.py) 的代码:
from django.db import models
from django.db import connection
# Create your models here.
class MyModel(models.Model):
columnName = models.IntegerField(db_column='columnName', primary_key=True)
columnEmail= models.IntegerField(db_column='columnEmail')
columnAddress= models.IntegerField(db_column='columnAddress')
columnPhone= models.IntegerField(db_column='columnPhone')
class Meta:
managed = False # Created from a view. Don't remove.
db_table = 'UserTable'
MyModel 基于在数据库中创建的视图。
我的问题:如何从数据库(testdb2)中读取数据
谢谢:D
【问题讨论】:
-
为什么
using不起作用?请提供更多信息。using方法什么时候不起作用? -
@YongjinJo,因为它总是从 testdb(默认)而不是 testdb2 读取。我已经在关键字 (Using) 中使用了 testdb2 (users) 的别名,但结果是一样的。
标签: python sql-server django postgresql