对不起,我对web2py manual explanation有点不清楚。
作为示例,给定app1和app2
我想让app2共享我在app1中构建的数据库
所以我将app2 / models / db.py文件改为show:db = DAL('sqlite://storage.sqlite',migrate='false')?
并在app2 / models目录中包含所有其他myModel.py文件?
如果数据库在app1 / databases /中,app2如何知道如何找到正确的数据库文件?
This Thread开始回答这个问题,但我仍不清楚如何定义共享数据库所在的位置。
答案 0 :(得分:1)
我现在无法测试,但答案应该是:
db = DAL('sqlite://storage.sqlite',folder='path/to/app/databases')
答案 1 :(得分:1)
注意,DAL(..., migrate=False)
只为每个表设置migrate
的默认值 - 它对define_table()
调用包含其自己的显式{的表的迁移状态没有任何影响{1}}论点。如果要完全禁用整个数据库连接的迁移(无论单个migrate
调用),请使用:
define_table()
此外,要在应用程序之间共享模型定义,而不是简单地复制模型文件,您可以将定义放在模块中的函数或类中,然后导入模块。另一种选择是使用auto_import:
DAL(..., migrate_enabled=False)
请注意,DAL(..., auto_import=True)
将导入字段名称和类型,但它不会包含特定于DAL的属性,例如验证程序和默认值,因此其用法有限。