SQLObject下的数据库更改

时间:2008-11-09 03:46:40

标签: python mysql database sqlite sqlobject

我正在开始一个可能适合SQLite的网络项目。我有SQLObject,但在这里考虑长期 - 如果这个项目需要更强大(例如能够处理高流量),我需要准备好过渡计划。我的问题:

  1. 在SQLObject下从一个DB(SQLite)转换到另一个(MySQL或Firebird或PostGre)有多容易?
  2. SQLObject是否提供了任何工具来简化这种转换?它只是简单地使用我定义的对象并调用createTable吗?
  3. 如果要改用多个SQLite数据库呢?例如。每个访客群一个? SQLObject是否提供了处理此方案的机制,如果是,那么使用什么机制?
  4. 谢谢, 肖恩

3 个答案:

答案 0 :(得分:3)

3)这是一个非常有趣的问题。一般来说,SQLite对于基于Web的东西来说是无用的。它的大小相当好,但是对于并发性来说非常可靠,所以如果你打算同时用几个请求来命中它,你就会遇到麻烦。

现在你在问题的第3部分中的想法是使用多个SQLite数据库(例如,每个用户组一个,甚至每个用户一个)。不幸的是,SQLite在这个部门没有任何帮助。但这是可能的。我知道之前完成此项目的一个项目是Divmod's Axiom。所以我肯定会检查出来。

当然,使用像你提到的那样好的并发数据库可能要容易得多(Firebird,PG等)。

为了完整性:

1和2)如果没有实际编写代码,它应该是直截了当的。我觉得SQLObject在这个部门有点限制,强烈推荐使用SQLAlchemy。这要灵活得多,如果我今天开始一个新项目,我肯定会使用SQLObject。它不会在任何地方移动“物体”。这里没有任何魔法,它将在数据库中的表中传输行。如上所述你可以手工完成,但这可能会节省你一些时间。

答案 1 :(得分:2)

您使用createTable()取得的成功将取决于您现有的基础表架构/数据类型。换句话说,SQLite如何映射到您选择的数据库以及SQLObject如何决定使用您的数据类型。

最安全的选项可能是手动创建新数据库。然后,您将不得不处理数据迁移,这可能就像在同一个表定义上实例化两个SQLObject数据库连接一样简单。

为什么不从更全功能的数据库开始呢?

答案 2 :(得分:0)

我不确定我理解这个问题。

SQLObject documentation列出了六种可用的连接。此外,数据库连接(或方案)在连接字符串中指定。将数据库连接从SQLite更改为MySQL是微不足道的。只需更改连接字符串。

documentation列出了支持的各种方案。