要在Django中使用多个数据库,只需在中指定每个数据库settings.py:
DATABASES = { 'default': { 'NAME': 'app_data', 'ENGINE': 'django.db.backends.postgresql', 'USER': 'django_db_user', 'PASSWORD': os.environ['LOCAL_DB_PASSWORD'] }, 'users': { 'NAME': 'remote_data', 'ENGINE': 'django.db.backends.mysql', 'HOST': 'remote.host.db', 'USER': 'remote_user', 'PASSWORD': os.environ['REMOTE_DB_PASSWORD'] } }
使用dbrouters.py文件来指定对于每种数据库操作类,哪些模型应在哪些数据库上进行操作,例如,对于存储在中的远程数据remote_data,您可能需要以下内容:
class DbRouter(object): """ A router to control all database operations on models in the auth application. """ def db_for_read(self, model, **hints): """ Attempts to read remote models go to remote database. """ if model._meta.app_label == 'remote': return 'remote_data' return 'app_data' def db_for_write(self, model, **hints): """ Attempts to write remote models go to the remote database. """ if model._meta.app_label == 'remote': return 'remote_data' return 'app_data' def allow_relation(self, obj1, obj2, **hints): """ Do not allow relations involving the remote database """ if obj1._meta.app_label == 'remote' or \ obj2._meta.app_label == 'remote': return False return None def allow_migrate(self, db, app_label, model_name=None, **hints): """ Do not allow migrations on the remote database """ if model._meta.app_label == 'remote': return False return True
最后,将您添加dbrouter.py到settings.py:
DATABASE_ROUTERS = ['path.to.DbRouter', ]
问题内容: 我一直在使用手动数据库选择来处理具有两个独立数据库的项目。我已经在设置中定义了数据库。 进一步阅读之后,看来数据库路由实际上是解决问题的方法。但是,在阅读了文档和此处的一些相关文章之后,我比以往更加困惑。 在我的设置中,我有: 我知道我必须像这样定义路由器类(我认为在文件中): 那呢 每个模型都需要一个还是自动的?除此之外,我仍然得到一个错误: django.core.exceptio
我想在定义路线时向路线添加一些自定义数据。 我该怎么做? 比如: 我不希望自定义数据显示在URL中。我只是在内部使用它。
我现在已经在camel中做了一些小项目,但有一件事我很难理解,那就是当在camel路线上消费时,如何处理大数据(这不适合内存)。 我有一个包含几GB数据的数据库,我想使用骆驼进行路由。显然,将所有数据读入内存不是一种选择。 如果我是作为一个独立的应用程序这样做的,我会有代码来分页数据并将块发送到我的JMS enpoint。我想使用骆驼,因为它提供了一个很好的模式。如果我从文件中消费,我可以使用流(
问题内容: 在我的Django项目中,我对第三方应用程序具有依赖性,该第三方应用程序在具有已知模式的各个目录中生成SQLite缓存文件。 我想使用Django模型来访问这些数据库,但是显然我不能使用静态DATABASES设置。 如何在任意路径上动态打开SQLite数据库? 编辑 正如Byron Ruth所指出的,解决方案是将django.db.connections结合使用usingQuerySe
问题内容: Upload.php: 这是表格(在单独的文件中): 错误是 ($ Filename = $ _ POST [‘Filename’];) 和 (回显“文件“。basename($ _FILES [‘uploadedfile’] [‘Filename’])。”已经上传,并且您的信息已添加到目录中“;) 给我: 问题答案: 首先,您应该使用它进行调试,然后查看其中包含的内容。: 您将看起来