2013-03-19 51 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 
...