2

我有来自 web2py 应用程序的 sqlite 数据库。我想使用gluon库来处理数据。我读过这篇文章,但我得到了错误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

4

3 回答 3

2

您可以使用pydal

pip install pydal

接着:

from pydal import DAL, Field
...
于 2015-12-29T00:59:32.000 回答
0

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

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

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

另外, do import gluon.dal, notgluon.sql很久以前就被弃用了(它只是指 gluon.dal)。

于 2013-03-19T23:22:39.913 回答
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)
于 2018-11-04T06:35:53.767 回答