我的postgres数据库中有很多模式。我想在我所有的模式中得到一个查询集(UNION all)。你知道吗
我使用的是Django2.2、Python3.6和Postgres9.7。你知道吗
我尝试定义一个特定的DBManager,比如:
class UnionManager(models.Manager):
def get_queryset(self):
return super().get_queryset().using("db1") | super().get_queryset().using("db2")
class Account(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
label = models.CharField(max_length=100, null=True)
objects = models.Manager()
union_manager = UnionManager()
并使用以下数据库配置:
config = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'databasename',
'USER': bdd_user,
'PASSWORD': db_pwd,
'PORT': bdd_port,
'HOST': host_writer,
},
'db1': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=db1,extensions'
},
'NAME': 'databasename',
'USER': bdd_user,
'PASSWORD': db_pwd,
'PORT': bdd_port,
'HOST': host_writer,
},
'db2': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=db2,extensions'
},
'NAME': 'databasename',
'USER': bdd_user,
'PASSWORD': db_pwd,
'PORT': bdd_port,
'HOST': host_writer,
}
}
queryset只从UnionManager类(这里是“db1”)中的第一个模式(Account.union_manager.all()
)返回对象
有什么建议吗?你知道吗
我找到了一个解决方案(未完全实施):
重新定义查询集:
我修改了工会经理:
现在
Account.union_manager.all()
从我的2个模式返回对象!你知道吗相关问题 更多 >
编程相关推荐