2013-03-19 52 views
2

我有来自web2py应用程序的sqlite数据库。 我想使用gluon库来处理数据。 我读过this post,但我收到错误DAL object has no attribute 'user。 据我所知,我需要使用表的定义(在myapp/models/tables.py)。 如何使用DAL与web2py之外的现有数据库(仅使用胶子库)。在web2py中单独使用DAL

这里是我的代码:

from gluon.sql import DAL, Field 
from gluon.validators import * 

module_path = os.path.abspath(os.path.dirname(__file__)) 
print module_path 
dbpath = module_path + '/../databases/' 

db_name = "storage.sqlite" 

db = DAL('sqlite://' + db_name, folder=dbpath) 
rows = db(db.user).select() 

我的问题是如何导入表的所有定义,我在myapp/models/tables.py

回答

0

您的代码是指db.user,但您尚未在代码中定义“用户”表。您不能从应用程序模型文件导入表格定义,因为它不是Python模块。一种解决方案可能是以下几点:

db = DAL('sqlite://' + db_name, folder=dbpath, auto_import=True) 

将读取从*。表文件表元数据,并创建表定义,虽然定义不会包括一些具体的web2py模型的属性,如字段验证,标签等。如果您需要具有所有字段属性的完整DAL表定义,则必须将它们直接包含在外部代码中。有关更多详细信息,请参阅here

另外,做import gluon.dal,而不是gluon.sql,这是很久以前已弃用(它只是指gluon.dal)。

+0

我编辑的职位。对不清楚的问题抱歉,但是如何从原始包含它们的文件中导入所有这些表定义? – ashim 2013-03-19 23:26:02

+0

还有一个关于[auto_import vs define_table]的相关SO问题(http://stackoverflow.com/questions/9152368/web2py-auto-import-vs-define-table) – djf 2013-05-16 12:20:17

0

您可以使用pydal

pip install pydal 

然后:

from pydal import DAL, Field 
...