1

我的 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 文件中的任何代码,但不小心删除了我的应用程序中“数据库”文件夹中的一些文件。但我怀疑这是否会导致错误,因为模块是在服务器上获取表而不是使用本地文件。

请帮忙!提前致谢!

4

1 回答 1

2

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

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

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

于 2013-09-27T14:19:25.273 回答