Django上具有相同模型的不同数据库

Bonifacio2

我有以下问题:

对于每个用户(或一组用户),我需要一个具有相同模型的不同数据库。我有一种方法可以找出与用户相关的数据库。问题是我总是必须对using我进行的每个查询都使用该方法。

例如:

Thing.objects.using('appropriate_database').all()

有没有办法避免using以某种方式使用户/数据库关系隐式使用?

Bonifacio2

我们做到了!让我解释一下。

我们编写了一个自定义的中间件,并将其注册为settings.py文件中的中间件类。

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'our.custom.middleware.Class',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

该中间件具有一个process_request方法,该方法创建一个线程变量(from threading import local)来为当前用户存储适当的数据库名称。由于每个请求都由不同的线程处理,因此我们知道变量的值不会被另一个线程意外更改。

下一步是创建数据库路由器并将其注册。

DATABASE_ROUTERS = ('our.custom.database.Router',)

注意:默认值settings.py没有DATABASE_ROUTERS变量。您必须创建它。

我们的定制Router具有相同的实现了db_for_readdb_for_write这些方法唯一要做的就是返回存储在线程变量中的数据库名称。

而已。现在,我们不必using每次都需要恢复或保存模型对象时调用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

同一台服务器上具有不同名称的相同数据库。需要一种管理数据库对象的方法

来自分类Dev

如何从数据库中选择具有相同查询但条件不同的表中的数据?

来自分类Dev

Rails 3.2具有相同模型名称的多个数据库连接

来自分类Dev

两个具有相同结构但命名约定不同的数据库可互换使用

来自分类Dev

具有不同名称的相同数据库表的C#匿名类型

来自分类Dev

如何使用php在我的数据库上获取具有相同名称但不同创建者的数据?

来自分类Dev

多个添加的实体在数据库种子上可能具有相同的主键

来自分类Dev

Django:将具有ForeignKey关系的模型实例保存到数据库的问题

来自分类Dev

Django模型datetime在模板中与数据库不同

来自分类Dev

将所有具有相同模型的CoreData数据库动态合并到虚拟单个数据库中

来自分类Dev

在具有不同扇区大小的HDD上备份数据库

来自分类Dev

在具有不同扇区大小的HDD上备份数据库

来自分类Dev

访问:同一数据库上的 2 个角色具有不同的角色

来自分类Dev

如何在类型化数据集xsd中使用具有相同表结构的不同数据库

来自分类Dev

在Django上更新数据库中的模型对象

来自分类Dev

Doctrine2 Symfony2扩展实体在不同的包中但具有相同的数据库表名称

来自分类Dev

将具有不同语言的帖子表的 2 个相同 ID 存储到数据库中

来自分类Dev

如何使用游标从具有相同表结构的不同数据库中获取Select语句的结果集

来自分类Dev

流星具有相同代码但不同的mongo数据库的两个服务器实例

来自分类Dev

如何使用 EF 和依赖注入在具有相同架构但不同名称的数据库之间进行更改?

来自分类Dev

如何合并两个具有相同数据但具有不同PK且没有重复字段的数据库?

来自分类Dev

使创建数据库用户和创建数据库实例运行在具有相同名称的现有值上

来自分类Dev

Django 1.8迁移:从不再具有模型的数据库表中获取数据的任何方法是什么?

来自分类Dev

EF具有不同版本的多个数据库

来自分类Dev

具有不同SID的Oracle导出数据库

来自分类Dev

SQL查询-具有内部联接的不同数据库

来自分类Dev

没有模型和数据库的Django项目

来自分类Dev

相同的数据库,不同的Solr索引

来自分类Dev

相同数据库的结果不同

Related 相关文章

  1. 1

    同一台服务器上具有不同名称的相同数据库。需要一种管理数据库对象的方法

  2. 2

    如何从数据库中选择具有相同查询但条件不同的表中的数据?

  3. 3

    Rails 3.2具有相同模型名称的多个数据库连接

  4. 4

    两个具有相同结构但命名约定不同的数据库可互换使用

  5. 5

    具有不同名称的相同数据库表的C#匿名类型

  6. 6

    如何使用php在我的数据库上获取具有相同名称但不同创建者的数据?

  7. 7

    多个添加的实体在数据库种子上可能具有相同的主键

  8. 8

    Django:将具有ForeignKey关系的模型实例保存到数据库的问题

  9. 9

    Django模型datetime在模板中与数据库不同

  10. 10

    将所有具有相同模型的CoreData数据库动态合并到虚拟单个数据库中

  11. 11

    在具有不同扇区大小的HDD上备份数据库

  12. 12

    在具有不同扇区大小的HDD上备份数据库

  13. 13

    访问:同一数据库上的 2 个角色具有不同的角色

  14. 14

    如何在类型化数据集xsd中使用具有相同表结构的不同数据库

  15. 15

    在Django上更新数据库中的模型对象

  16. 16

    Doctrine2 Symfony2扩展实体在不同的包中但具有相同的数据库表名称

  17. 17

    将具有不同语言的帖子表的 2 个相同 ID 存储到数据库中

  18. 18

    如何使用游标从具有相同表结构的不同数据库中获取Select语句的结果集

  19. 19

    流星具有相同代码但不同的mongo数据库的两个服务器实例

  20. 20

    如何使用 EF 和依赖注入在具有相同架构但不同名称的数据库之间进行更改?

  21. 21

    如何合并两个具有相同数据但具有不同PK且没有重复字段的数据库?

  22. 22

    使创建数据库用户和创建数据库实例运行在具有相同名称的现有值上

  23. 23

    Django 1.8迁移:从不再具有模型的数据库表中获取数据的任何方法是什么?

  24. 24

    EF具有不同版本的多个数据库

  25. 25

    具有不同SID的Oracle导出数据库

  26. 26

    SQL查询-具有内部联接的不同数据库

  27. 27

    没有模型和数据库的Django项目

  28. 28

    相同的数据库,不同的Solr索引

  29. 29

    相同数据库的结果不同

热门标签

归档