retrieving记录mysql数据库pydal

3gtaxfhh  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(306)

我有一个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)中所述。但当我在那个表中选择时,我得到了上面的错误。我需要做什么?我已经搜索过了,但没有找到成功的解决方案。谁也帮不了我?谢谢。

aurhwmvo

aurhwmvo1#

web2py不完全支持键控表(即主键不是自动递增id字段的表)。特别地, crud.search 不支持此类表。
如果可能的话,最好包含一个类型为 id 在作为主键的表中(如果没有指定这样的字段,dal将自动包含一个名为“id”的字段)。
另外,请注意 Crud 不赞成赞成 SQLFORM.grid .

相关问题