我正在从 sqlite 迁移到 mysql,并且需要在数据库中的列上创建索引。令人烦恼的是,mySQL 没有 CREATE INDEX IF NOT EXISTS 功能。所以我想知道是否可以在 web2py 创建表本身时创建一个新索引,而不是任何其他时间。但是我应该在代码中的哪里放置一个仅在 web2py 调用“创建表”时调用的例程?
最佳答案
web2py API 不包含确定给定表是否刚刚作为当前请求的一部分创建的方法(如果打开迁移,则在第一个请求时创建表,否则假设表已存在)。当通过 web2py 迁移机制在数据库中创建表时,会在应用程序的/databases 文件夹中创建一个 *.table 文件。因此,要确定表是否刚刚创建,您必须确定在调用 db.define_table 之前不存在 *.table 文件,并且 *.表文件确实存在。您可能不想对每个请求都执行此操作,因此最好在应用程序外部简单地处理索引创建。
更好的方法可能是手动生成 SQL 来检查索引是否存在,但同样,您希望在生产中的每个请求上避免这种情况。
请注意,已经讨论过向 DAL 添加索引创建功能,但目前还没有。
关于mysql - Web2py:如何调用创建表的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36602374/