在web2py中独立使用DAL

时间:2013-03-19 23:17:23

标签: python web2py

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

这是我的代码:

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中所有表格的定义?

3 个答案:

答案 0 :(得分:2)

您可以使用pydal

pip install pydal

然后:

from pydal import DAL, Field
...

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

您必须与从web2py环境收到的pydal / dal版本分开安装pydal。 (还要检查您的web2py副本中的pydal版本,并将相同版本安装到python中)

pip install pydal==some_version_number

注意:您必须使用指向数据库表所在文件夹的显式路径。

from pydal import DAL

db = DAL("some_db_uri", folder="/some/full_path_to/database", auto_import=True)
相关问题