Web2py:如何在 table 创建时调用函数

Web2py: how to call a call a function on table creation

我正在从 sqlite 迁移到 mysql,并且需要在我的数据库中的列上创建索引。令人讨厌的是,mySQL 没有如果不存在则创建索引的功能。所以我想知道我是否可以在 table 本身由 web2py 创建时创建一个新索引,而不是任何其他时间。但是我应该在代码的什么地方放置一个仅在 web2py 调用 'create table'?

时调用的例程

web2py API 不包含确定给定 table 是否刚刚作为当前请求的一部分创建的方法(如果启用了迁移,table在第一次请求时创建,否则,假定 table 已经存在)。当通过 web2py 迁移机制在数据库中创建 table 时,会在应用程序的 /databases 文件夹中创建一个 *.table 文件。因此,要确定 table 是否 只是 创建,您必须确定在调用 db.define_table 之前不存在 *.table 文件,并且 *.table 文件确实存在。您可能不想对每个请求都执行此操作,因此最好在应用程序外部简单地处理索引创建。

更好的方法可能是手动生成 SQL 以检查索引是否存在,但同样,您希望在生产中的每个请求中避免这种情况。

请注意,已经讨论过向 DAL 添加索引创建功能,但目前还没有。