检索记录MySql数据库PyDAL

时间:2018-06-02 13:21:29

标签: python mysql crud web2py pydal

我有一个MySql数据库,我的Web2Py应用程序存储数据。我的应用程序可以成功插入记录。现在的问题是在检索信息时。下面是我的DAL连接和作者表定义。

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'])

问题是当我尝试在我的控制器中检索作者表的所有信息(这意味着在SQL中选择*来自作者)时:

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_id ,即varchar(字符串python),我在表DAL定义中指定为主键,如{ {3}}。但是,当我在该表中进行选择时,我得到了上面的错误。我需要做什么?我已经搜索过了,但我没有找到成功的解决方案。 Somenone可以帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:0)

web2py不完全支持键控表(即主键不是自动递增ID字段的表)。特别是,crud.search不支持此类表格。

如果一切皆有可能,最好在表中包含id类型的字段作为主键(如果您没有指定这样的字段,DAL会自动包含一个名为“id”的字段) )。

另请注意,Crud已弃用,而不是SQLFORM.grid