0

对不起,我对web2py 手册解释有点不清楚。

例如,给定 app1 和 app2

我想让 app2 共享我在 app1 中构建的数据库

那么我是否将 app2/models/db.py 文件更改为显示: db = DAL('sqlite://storage.sqlite',migrate='false') ?

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

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

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

4

2 回答 2

1

我现在无法对此进行测试,但答案应该是:

  • 您可以覆盖 DAL 中的文件夹:

    所以两个应用程序都应该指向同一个文件。

    (请参阅文档和此线程)。

.

db = DAL('sqlite://storage.sqlite',folder='path/to/app/databases')
  • 是的,两个应用程序中也应该需要模型文件,否则应用程序将不知道如何访问数据库。
于 2012-11-26T17:08:07.907 回答
1

请注意,DAL(..., migrate=False)只需为每个表设置默认值migrate——它不会对define_table()调用包含其自己的显式migrate参数的表的迁移状态产生任何影响。如果您想完全禁用整个数据库连接的迁移(不管单个define_table()调用),请改用:

DAL(..., migrate_enabled=False)

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

DAL(..., auto_import=True)

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

于 2012-11-26T23:59:49.273 回答