我正在一个django项目中,我所有的单元测试用例都运行良好。
当我引入第二个数据库后,我从TestCase继承的所有测试用例都被破坏了。在这个阶段,我还没有为第二个数据库建立任何测试用例,但是我的路由器工作正常。
当我运行测试时,我得到了错误,
“ KeyError:'SUPPORTS_TRANSACTIONS'”
在我看来,这是在尝试检查确保我安装的所有数据库都支持事务,但从未创建第二个数据库。
关于如何使用测试脚本来构建第二个数据库的任何想法。
我正在开发一个Django应用程序,它将使用多个数据库后端.我想在运行django应用程序的机器上放一个sqlite数据库,并同步到远程mysql数据库.棘手的部分是运行应用程序的这台机器并不总是有互联网连接,所以mysql数据库并不总是可用的.将有多台机器运行该应用程序,每台机器都有自己的本地sqlite DB,但都使用相同的远程mysql DB.
我还没有编写代码,但这是我的想法.我每次运行插入或更新,我想将其写入到两个数据库,除非远程数据库不可用,在这种情况下,我会保存在SQL语句中的表在本地数据库上运行时,远程数据库是可用的.
这可以用数据库路由器完成,还是我需要用每个db语句手动实现它?
关于PK的注意事项:没有直接关系,但肯定会被问到.主键将在每台机器上本地生成.在mysql DB中,将有一个该键的字段,以及一个具有应用程序每个实例的唯一标识符的字段,它们将共同提供唯一键.
我们在Heroku上托管了一个Rails应用程序,我需要为我们的营销人员设置一些分析页面.这似乎是Heroku 关注数据库的典型用例
2个数据库将共享相同的模型类,我只想要一些操作来查询复制的数据库.
在我的应用程序中处理这种情况的首选方法是什么?
ActiveRecord :: Base文档讨论了特定于类的连接:
您还可以设置特定于类的连接.例如,如果Course是ActiveRecord :: Base,但驻留在不同的数据库中,则可以说Course.establish_connection和Course及其所有子类将使用此连接.
我应该将所有模型类子类化以指定与辅助数据库的连接吗?(它会工作吗?)
我也发现了这个宝石,但它似乎不再维护.... magic_multi_connections gem?
我有多个数据库文件,它们存在于多个位置,结构完全相同.我理解attach函数可以用于将多个文件连接到一个数据库连接,但是,它将它们视为单独的数据库.我想做的事情如下:
SELECT uid, name FROM ALL_DATABASES.Users;
Run Code Online (Sandbox Code Playgroud)
也,
SELECT uid, name FROM DB1.Users UNION SELECT uid, name FROM DB2.Users ;
Run Code Online (Sandbox Code Playgroud)
不是一个有效的答案,因为我需要合并任意数量的数据库文件.最后,数据库文件必须保持独立.有谁知道怎么做到这一点?
编辑:一个答案给了我一个想法:是否可以创建一个视图,它是所有不同表的组合?是否可以查询所有数据库文件以及它们"挂载"的数据库,然后在视图查询中使用它来创建"主表"?
我正在使用 wpmudev.org 的插件将一个包含一个数据库和 81,000 多个表的 WordPress 站点分解为一个多数据库。主要动机是性能,我检查了表本身,它们是 MyISAM 类型。
我在想,在将表移动到新数据库时,我还可以将表类型更改为 InnoDB,这应该会提高站点性能。
将表从现有数据库迁移到新数据库的脚本使用以下语法:
创建表 .... LIKE .... 插入 .... SELECT * FROM ....
如果我可以在 CREATE TABLE 命令中覆盖引擎,我无法找到信息,例如:
创建表 .... LIKE .... ENGINE=InnoDB
另外我想知道“INSERT INTO .... SELECT * FROM ....”是否是插入数据的最有效方法...这是一个 php 脚本,所以我不介意添加一些代码来改进性能 - 在早期的试验中需要 3 天才能在 4 核 4GB RAM 上运行!
可能同时连接两个SQL数据库吗?我的意思是从一个数据库我正在阅读记录并将它们与一些数据(如电子邮件地址)进行比较,并根据数据库中是否存在该电子邮件地址的决定我将新记录存储在另一个数据库中.
这种双重操作可能吗?
我使用C#.net的SqlConnection和SqlCommand语句连接数据库
谢谢.
我有一个使用多个数据库的 Django 应用程序。给定一个模型实例,如何获取存储它的数据库(如果有)?我需要这个来将另一个对象保存到与第一个相同的数据库中。
def add_ducks_to_hunt(hunter):
db = # the hunter's db
duck = Duck()
duck.save(using=db)
Run Code Online (Sandbox Code Playgroud) 我想编写一个大量利用核心数据的“管理”游戏。游戏需要预先设置、预定义的数据集,用户/系统无法更改;它用于为游戏提供数据种子,并且是只读的。
我能给出的最好的例子是足球管理游戏,但它可以是任何东西。在一些足球管理模拟游戏中,他们为您提供场景和预设数据集。
当用户继续游戏时,他们可以保存/加载保存到核心数据的进度。
除此之外,用户还可以接收预定义数据的更新或购买场景数据包;保存到他们的设备上。
因此,可能有多个“核心数据数据库”(是的,我知道核心数据严格来说并不是一个数据库)或应用程序可以深入使用的“存储桶”。
数据的架构不会改变。
所以我们有:
这听起来像是在给定时间有多个数据库。显然,应该限制用户可以保存游戏的数量。
另一种解决方案是用户的设备以 JSON 或 XML 格式导出数据的备份副本,并将其用作“保存数据”,我也可以在场景中使用此策略。显然,需要某种加密来防止人们通过 XML 简单地更改游戏中的统计数据。
但我从一开始就想知道使用 iOS 设备的核心数据处理多个核心数据“数据库”的最佳方式是什么?
谢谢你的时间
core-data multiple-databases nsmanagedobject nsentitydescription
我们有一个主数据库,我们所有的应用程序都在这里.
但是有一个第二个数据库(从外部源更新),我希望能够连接到这个数据库以便从中提取数据.我不需要写任何东西......只需阅读.
它也只有一张我要拉的桌子.
我真的只需要做一些事情:
OtherDatabase.articles.where(id > 1000)
Run Code Online (Sandbox Code Playgroud)
就是这样.
那么我怎样才能在Rails中运行(运行3.2.13)?
假设我的服务器上有一个 django 应用程序,但我希望使用 django.contrib.auth.models 进行身份验证,其中用户和组模型/数据位于另一个数据库中的另一台服务器上。在 Django 中,我的数据库设置将是这样的:
DATABASES = {
'default': {},
'auth_db': {
'NAME' : 'my_auth_db',
'ENGINE' : 'django.db.backends.mysql',
'USER' : 'someuser',
'PASSWORD' : 'somepassword',
'HOST' : 'some.host.com',
'PORT' : '3306',
},
'myapp': {
'NAME': 'myapp_db',
'ENGINE': 'django.db.backends.mysql',
'USER': 'localuser',
'PASSWORD': 'localpass',
}
}
DATABASE_ROUTERS = ['pathto.dbrouters.AuthRouter', 'pathto.dbrouters.MyAppRouter']
Run Code Online (Sandbox Code Playgroud)
第一个问题:这是否有效,即它是否允许我使用存储在远程数据库“my_auth_db”中的用户登录到我的 Django 应用程序?
假设上述答案是肯定的,如果在我的本地数据库(应用程序“myapp”)中我的模型具有针对用户的外键,会发生什么情况?换句话说,我的模型 SomeModel 是在 myapp 中定义的,并且应该存在于 myapp_db 中,但它在 my_auth_db 中具有指向用户的外键:
class SomeModel(models.model):
user = models.ForeignKey(User, unique=False, null=False)
description = models.CharField(max_length=255, null=True)
dummy = models.CharField(max_length=32, null=True)
etc.
Run Code Online (Sandbox Code Playgroud)
第二个问题:这可能吗?或者一个数据库表根本不可能拥有另一个数据库中的表的外键?
如果我真的想完成这项工作,我可以将ForeignKey字段“user”替换为IntegerField“user_id”,然后如果我需要somemodel.user,我会改为获取somemodel.user_id并使用models.User.objects.get(pk =somemodel.user_id),路由器知道在哪里查询用户的 …
python django django-models multiple-databases django-database