【问题标题】:Django accessing multiple databases dynamicallyDjango 动态访问多个数据库
【发布时间】:2020-06-25 06:58:58
【问题描述】:

我有一个 django 项目,我正在尝试制作一个基于客户的杂货系统。在这里,我为每个客户提供不同的数据库。 每个数据库都包含订单历史记录以及所有其他详细信息,例如联系方式等。

我将获得一个 url 参数以通过 customer_id 识别客户,并且我将能够获得要使用的数据库,即数据库名称。代码 -

型号-

class Company(models.Model):
    company_id = models.IntegerField(primary_key = True)
    name = models.CharField(max_length=256, blank=True, null=True)
    db_name = models.CharField(max_length=200, blank=True, null=True)
    db_uuid = models.CharField(max_length=100, blank=True, null=True)
    objects = DataFrameManager()

    def __str__(self):
        return self.name

查看文件-

@api_view(['GET', 'POST'])
def page(request, uuid):

if request.method == 'GET':
    rtrn = Company.objects.filter(db_uuid=uuid).values('db_name')
    return Response(rtrn)
    

网址文件-

urlpatterns = [

    url(r'user/(?P<uuid>[a-zA-Z0-9-]+)/$', page, name="getfromurl"), 

    ]

这里我将返回数据库名称。

但我无法理解和实现数据库的更改。让我用一个例子让你明白-

假设客户名称 Gaurav 有 db 'gaurav_groceries'。通过代码,我得到了名字 - gaurav_groceries。但是在 setting.py 中,我将默认数据库添加为“grocies”,那么如何使用 db 的这种动态特性,即在这种情况下我们有“gaurav_groceries”,用于进一步计算和编码。

谢谢

【问题讨论】:

    标签: django database django-models django-rest-framework


    【解决方案1】:

    您尝试做的事情并非易事。您可能想查看现有的解决方案,例如 Django-multitenant,它是当前用于在 Django 中使用租户数据库构建应用程序的标准库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-28
      • 2014-07-16
      • 1970-01-01
      • 2020-07-03
      • 2012-09-12
      • 1970-01-01
      • 2018-04-12
      • 2011-10-04
      相关资源
      最近更新 更多