2012-11-26 10 views
0

对不起,我对web2py manual explanation有点不清楚。澄清关于共享单个数据库的web2py应用程序

为例,给出APP1和App2

我想有APP2分享我已经建立了APP1的数据库

所以做我改变APP 2 /模型/ db.py文件显示:DB = DAL('sqlite://storage.sqlite',migrate='false')?

并包含app2/models目录中的所有其他myModel.py文件?

如果数据库位于app1/databases/app2如何知道如何找到正确的数据库文件?

This Thread开始回答这个问题,但我仍然不清楚如何定义共享数据库的位置。

回答

1

注意,DAL(..., migrate=False)只是设置的migrate每个表的默认值 - 它不会对表,其define_table()调用包括自己明确的说法migrate的移民身份产生任何影响。如果您想对整个数据库连接(无论个人define_table()电话)完全禁用迁移,而是使用:

DAL(..., migrate_enabled=False) 

此外,为应用程序之间共享模型定义,而不是简单的复制模型文件,你可以将定义放入模块中的函数或类中,然后导入模块。另一种选择是使用auto_import

DAL(..., auto_import=True) 

注意,auto_import将导入的字段名和类型,但不会包含DAL-特定的属性,如验证和默认值,因此它的使用受到限制。

1

我现在不能测试此权利,但答案应该是:

  • 可以在DAL覆盖的文件夹:

    因此,无论应用程序应该指向同一个文件。

    (参见docs和此thread)。

db = DAL('sqlite://storage.sqlite',folder='path/to/app/databases') 
  • 是的,应该需要在这两个应用模型文件太大,否则应用程序将不知道如何访问数据库。
相关问题