我有一个mysql数据库,在那里我的web2py应用程序存储数据。我的应用程序可以成功插入记录。现在的问题是在检索信息时。下面是我的dal连接和author表定义。
db = DAL('mysql://myUser:myPassWord@localhost/myDB',
migrate_enabled=true, check_reserved=['all'],fake_migrate_all=True,
migrate=False)
db.define_table('author',
Field('author_id', 'string'),
Field('name', 'string', requires=[IS_NOT_EMPTY()]),
...
Field('lang', 'string', requires=[IS_NOT_EMPTY()]),
primarykey=['author_id'])
问题是,当我尝试检索控制器中author表的所有信息(在sql中,这意味着select*from author)时,使用:
crud.search(db.author)
我有个错误:
<class 'AttributeError'> 'Table' object has no attribute 'id'
...
query undefined
args {}
args.get <built-in method get of dict object>
table <Table author (author_id, name, screen_n...l,
url, verified, lang)>
table.id undefined
在我的表定义中,您可以看到我的主键是字段author\u id,它是varchar(string python),我在表dal定义中指定为主键,如web2py dal文档(primarykey)中所述。但当我在那个表中选择时,我得到了上面的错误。我需要做什么?我已经搜索过了,但没有找到成功的解决方案。谁也帮不了我?谢谢。
1条答案
按热度按时间aurhwmvo1#
web2py不完全支持键控表(即主键不是自动递增id字段的表)。特别地,
crud.search
不支持此类表。如果可能的话,最好包含一个类型为
id
在作为主键的表中(如果没有指定这样的字段,dal将自动包含一个名为“id”的字段)。另外,请注意
Crud
不赞成赞成SQLFORM.grid
.