我有一个旧数据库,名为my_legacy_db,它与普通数据库分开。在
用户 -电子邮件 -用户名 -姓名
所以cliff,你的第一部分将生成字段名,并将所有内容放入dict中以构建查询。问题是,当我执行此查询时:
db().select(my_legacy_db.users)
I get this error:
In [20] : db().select(my_legacy_db.users)
Traceback (most recent call last):
File "/opt/web-apps/web2py/gluon/contrib/shell.py", line 233, in run
exec compiled in statement_module.__dict__
File "<string>", line 1, in <module>
File "/opt/web-apps/web2py/gluon/dal.py", line 7578, in select
return adapter.select(self.query,fields,attributes)
File "/opt/web-apps/web2py/gluon/dal.py", line 1307, in select
sql = self._select(query, fields, attributes)
File "/opt/web-apps/web2py/gluon/dal.py", line 1196, in _select
raise SyntaxError, 'Set: no tables selected'
SyntaxError: Set: no tables selected
In [21] : print (flickr_db.users)
users
In [22] : print flickr_db
<DAL {'_migrate_enabled': True, '_lastsql': "SET sql_mode='NO_BACKSLASH_ESCAPES';", '_db_codec': 'UTF-8', '_timings': [('SET FOREIGN_KEY_CHECKS=1;', 0.0002460479736328125), ("SET sql_mode='NO_BACKSLASH_ESCAPES';", 0.00025606155395507812)], '_fake_migrate': False, '_dbname': 'mysql', '_request_tenant': 'request_tenant', '_adapter': <gluon.dal.MySQLAdapter object at 0x91375ac>, '_tables': ['users'], '_pending_references': {}, '_fake_migrate_all': False, 'check_reserved': None, '_uri': 'mysql://CENSORED', 'users': <Table 'username': <gluon.dal.Field object at 0x9137b6c>, '_db': <DAL {...}>, 'cycled': <gluon.dal.Field object at 0x94d0b8c>, 'id': <gluon.dal.Field object at 0x95054ac>, 'ALL': <gluon.dal.SQLALL object at 0x969a7ac>, '_sequence_name': 'users_sequence', 'name': <gluon.dal.Field object at 0x9137ecc>, '_referenced_by': [], '_singular': 'Users', '_common_filter': None, '_id': <gluon.dal.Field object at 0x95054ac>}>, '_referee_name': '%(table)s', '_migrate': True, '_pool_size': 0, '_common_fields': [], '_uri_hash': 'dfb3272fc537e3339819a1549180722e'}>
我是不是做错了什么?旧数据库不是内置的/数据库对吗?提前谢谢你的帮助。在
更新:我尝试了安东尼在模型外壳中的建议:
^{pr2}$现在我知道用户是在我的旧版数据库中定义的,所有语法都是正确的。这是因为数据库文件没有正确生成而出现的错误吗?或者我还在用select语法做错事?在
如果“users”是一个表的名称,并且您希望选择所有记录和所有字段,则应执行以下操作:
查询位于
db()
内部,而不是select()
(select()
是列出要返回的字段的位置,如果需要所有字段,则将其留空)。注意,在上面的行中,my_legacy_db.users
实际上不是一个查询,而是一个表,它是一个快捷方式,可以告诉web2py您想要表中的所有记录。在您还可以:
^{pr2}$它指示您需要所有字段,并且通过排除查询,它假定您需要表中的所有记录。在
有关详细信息,请参阅book。在
相关问题 更多 >
编程相关推荐