我的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”文件夹中的一些文件。但我怀疑这是否会导致错误,因为模块在服务器上获取表而不是使用本地文件。
请帮忙!提前谢谢!
答案 0 :(得分:2)
DAL不检查MySQL数据库以发现其表和字段。您必须明确定义数据模型。因此,在代码中的某个位置,您必须执行以下操作:
db.define_table('patientaccount',
Field('email'),
...)
这将定义db.patientaccount
表,以便DAL知道它存在以及它包含哪些字段。