在啥情况下 db.define_table() 会返回 None

Posted

技术标签:

【中文标题】在啥情况下 db.define_table() 会返回 None【英文标题】:Under what circumstances would db.define_table() return None在什么情况下 db.define_table() 会返回 None 【发布时间】:2020-11-04 14:23:59 【问题描述】:

这段代码运行良好,但现在失败了,因为 db.define_table() 返回 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 工作?

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

【问题讨论】:

【参考方案1】:

您可能还设置了DAL(..., lazy_tables=True),在这种情况下,db.define_table() 返回None 而不是Table 对象,因为在第一次通过db.tablename 访问之前不会实际创建表。

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

【讨论】:

你太棒了!这正是我所做的。谢谢。

以上是关于在啥情况下 db.define_table() 会返回 None的主要内容,如果未能解决你的问题,请参考以下文章

在啥情况下 GetMsgProc 函数会收到小于 0 的代码?

AppDomain.DoCallback()在啥情况下会失败?

在啥情况下 websocket 关闭事件会告诉你 wasClean 是假的?

memcpy在啥情况下会失败

memcpy在啥情况下会失败

Android:在啥情况下出现对话框会导致 onPause() 被调用?