Web2py DAL没有属性?

时间:2013-09-27 11:41:59

标签: python mysql amazon-ec2 web2py

我的web2py应用程序今天给我一个错误,这很奇怪。

Traceback (most recent call last):
  File "/var/www/web2py/gluon/restricted.py", line 212, in restricted
    exec ccode in environment
  File "/var/www/web2py/applications/1MedCloud/controllers/default.py", line 475, in <module>
  File "/var/www/web2py/gluon/globals.py", line 194, in <lambda>
    self._caller = lambda f: f()
  File "/var/www/web2py/applications/1MedCloud/controllers/default.py", line 63, in patient_register
    rows = db(db.patientaccount.email==email).select()
  File "/var/www/web2py/gluon/dal.py", line 7837, in __getattr__
    return ogetattr(self, key)
AttributeError: 'DAL' object has no attribute 'patientaccount'

我使用Mysql作为数据库,表'patientaccount'确实存在。没有连接问题,因为我可以创建表但不从服务器获取它们。

我一直在使用相同的代码来做db的事情,这是我的代码

db = DAL('mysql://###:$$$@^^^^^^:3306/account_info', pool_size=0)
    rows = db(db.patientaccount.email==email).select()

我没有更改default.py文件中的任何代码,但是意外删除了我的应用程序中“database”文件夹中的一些文件。但我怀疑这是否会导致错误,因为模块在服务器上获取表而不是使用本地文件。

请帮忙!提前谢谢!

1 个答案:

答案 0 :(得分:2)

DAL不检查MySQL数据库以发现其表和字段。您必须明确定义数据模型。因此,在代码中的某个位置,您必须执行以下操作:

db.define_table('patientaccount',
    Field('email'),
    ...)

这将定义db.patientaccount表,以便DAL知道它存在以及它包含哪些字段。