的web2py分贝没有定义(web2py db is not defined)

2019-09-21 05:26发布

我试图运行在使用用下面的命令模型的命令行脚本:

c:\web2py>python web2py.py -M -N -S automate -R applications/automate/modules/eventserver.py

但我不断收到错误:

web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.7 (2012-03-04 22:12:08) stable
Database drivers available: SQLite3, pymysql, pg8000, IMAP
Traceback (most recent call last):
  File "c:\web2py\gluon\shell.py", line 206, in run
    execfile(startfile, _env)
  File "applications/automate/modules/eventserver.py", line 6, in <module>
    deviceHandler = devicehandler.DeviceHandler()
  File "applications\automate\modules\devicehandler.py", line 10, in __init__
    self.devices = self.getActiveDevices()
 File "applications\automate\modules\devicehandler.py", line 18, in getActiveDe
vices
    print db
NameError: global name 'db' is not defined

我究竟做错了什么?

编辑:从我的研究,我只找到了解决办法“-M添加到您的命令”,但我已经这样做了,它仍然不起作用。

EDIT2:我有DB = DAL( 'sqlite的://storage.sqlite')在我db.py所以它应该得到加载

Answer 1:

EDIT2:我有DB = DAL( 'sqlite的://storage.sqlite')在我db.py所以它应该得到加载

假设db.py是在/模型文件夹中, db对象创建会有在以后的执行模型可用文件,以及在控制器和视图,但它不会对你导入模块内提供。 相反,你必须将通过db对象的模块中的函数或类。 另一种选择是将添加db对象到current线程本地对象,然后可将其导入和访问的模块内:

在/models/db.py:

from gluon import current
db = DAL('sqlite://storage.sqlite')
current.db = db

在/modules/eventserver.py:

from gluon import current
def somefunction():
    db = current.db
    [do something with db]

请注意,如果你定义了db模块中的对象,在顶层没有定义它-在一个函数或类定义它。

有关详细信息,请参阅本书部分模块和current



文章来源: web2py db is not defined
标签: python web2py