Python Web2py查询未返回任何结果
我在Web2py中有两个表Python Web2py查询未返回任何结果,python,sql,web2py,Python,Sql,Web2py,我在Web2py中有两个表 auth_user(标准表格) 客户(我定义了此表) 使用表单为客户创建条目时,将使用当前登录的用户(创建条目的用户)、id(来自auth\u user表)在company\u id字段的customer表中放置一个值。这是通过auth.user\u id完成的 现在,我尝试使用当前登录用户的auth.user\u id查询customer表,以调出当前登录用户创建的所有条目 我正在这样做 def viewcustomers(): rows = db.c
(标准表格)auth_user
(我定义了此表)客户
id
(来自auth\u user
表)在company\u id
字段的customer
表中放置一个值。这是通过auth.user\u id
完成的
现在,我尝试使用当前登录用户的auth.user\u id
查询customer
表,以调出当前登录用户创建的所有条目
我正在这样做
def viewcustomers():
rows = db.customer(db.customer.company_id == auth.user_id)
print rows
在我看来,我有
{{=viewcustomers}}
我得到的唯一结果是“没有”
有人知道发生了什么吗?为什么不让控制器的viewcustomers()函数返回一个以“viewcustomers”为键的字典
def viewcustomers():
rows = db.customer(db.customer.company_id == auth.user_id).select()
return dict(viewcustomers = rows) # or whatever instead of 'rows'
另外,如果您正在基于当前客户执行db查询,那么应该是session.auth.user.id而不是auth.user\u id吗
编辑:在下面的对话之后添加了“.select()”。不要使用
打印来生成HTML输出。print
命令将直接打印到控制台。为了执行视图,您的函数必须返回字典(实际上,您的函数不返回任何内容,这就是浏览器显示“无”的原因)
另外,db.mytable(query)
语法只返回第一条匹配记录。如果需要所有记录,则必须使用db(query).select()
语法
因此,您的函数应该如下所示:
def viewcustomers():
rows = db(db.customer.company_id == auth.user_id).select()
return dict(viewcustomers=rows)
注意,如果您在视图中插入一个行
对象,默认情况下它将通过SQLTABLE
显示。通过添加return dict(viewcusters=Rows)行,它似乎正在工作。明亮的然而,当表中有更多结果时,它只返回一个结果@Boa,你知道如何让它显示多个结果吗?@user207336-尝试将上面的“rows=…”行替换为:“rows=db.customer(db.customer.company_id==auth.user_id.select()”。注意,auth.user_id
与session.auth.user.id
(虽然前者只会返回None
,以防没有session.auth.user.id
,而不是引发异常)。@Anthony-谢谢-太棒了。如果我早点知道的话,我会节省很多打字、复制和粘贴的时间!