【问题标题】:One single MySQL database for many web2py applications用于许多 web2py 应用程序的单个 MySQL 数据库
【发布时间】:2011-11-07 06:18:43
【问题描述】:

我的 web2py 框架下有 3 个应用程序。我可以为所有这些都使用一个 MySQL 数据库(通过为表添加前缀),因此用户只需要一次注册即可访问这 3 个应用程序吗?我的尝试失败了。还是有其他解决方案?非常感谢。

【问题讨论】:

  • “尝试”失败?您可能需要详细说明。
  • 你好。一旦我使用相同的数据库设置我的应用程序的所有 3 个 DAL,它就会失败。如果数据库仅由一个应用程序使用,它可以正常工作。谢谢。
  • 如果我回溯,它会显示 InternalError: (1050, u"Table 'auth_user' already exists")。确定它已经存在,因为它是由第一个应用创建的。

标签: python web2py


【解决方案1】:

如果多个应用程序共享同一个数据库表,则除一个应用程序之外的所有应用程序都必须使用migrate=False 定义该表以防止迁移尝试。请注意,Auth.define_tables() 还接受 migrate 参数,因此要关闭专门针对 Auth 表的迁移,您可以这样做:

auth.define_tables(migrate=False)

您还可以通过以下方式关闭应用程序中整个数据库连接的迁移:

db = DAL(..., migrate_enabled=False)

有关应用间合作的更多信息,请参阅here

【讨论】:

  • 但我仍然不知道一个注册如何适用于所有应用程序?
  • 您也可以考虑设置Central Authentication Service,让其中一个应用成为提供者,其他应用成为消费者。
  • 再次感谢您的指导,安东尼。 CAS 正是我现在所需要的。
猜你喜欢
  • 1970-01-01
  • 2011-10-26
  • 2019-05-23
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2019-07-07
  • 1970-01-01
相关资源
最近更新 更多