我正在从sqlite迁移到mysql,需要在我的数据库中的列上创建索引。令人讨厌的是,mySQL没有CREATE INDEX IF NOT EXISTS工具。所以我想知道当表本身是由web2py创建时,我是否可以创建一个新索引,而不是任何其他时间。但是在代码中我放置一个仅在web2py调用'create table'时调用的例程?
答案 0 :(得分:1)
web2py API不包含确定给定表是否刚刚作为当前请求的一部分创建的方法(如果启用了迁移,则表是在第一个请求上创建的,否则,假定为表已经存在)。通过web2py迁移机制在数据库中创建表时,会在应用程序的/ databases文件夹中创建* .table文件。因此,要确定表是否只是创建,您必须确定在调用db.define_table
之前不存在* .table文件,并且* .table文件确实存在后。您可能不希望在每个请求上执行此操作,因此最好只在应用程序之外处理索引创建。
更好的方法可能是手动生成SQL以检查索引是否存在,但同样,您希望在生产中的每个请求中避免这种情况。
注意,有关于向DAL添加索引创建功能的讨论,但它还没有。