在什么情况下 db.define_table() return None

Under what circumstances would db.define_table() return None

这段代码工作正常,但现在失败了,因为 db.define_table() returns None.

table = db.define_table('DatabaseModel', Field('TableName'))  # This is not working now
for t in db.tables:
    table.update_or_insert(TableName=t)

我所做的唯一可能影响它的更改是在 appconfig.ini 中设置 migrate = false。我已经改回来了,但是没有用。

什么可以阻止 db.define_table 工作?

(我正在使用它来创建一个内存中的 table,我用实际 table 的列表填充它。)

您可能还设置了 DAL(..., lazy_tables=True),在这种情况下,db.define_table() returns None 而不是 Table 对象,因为 table 直到通过 db.tablename.

首次访问后才真正创建

鉴于您的代码,设置 lazy_tables=True 没有任何好处,因为所有 table 无论如何都会在定义后立即被访问(并因此被创建)。