I do not understand.

This should be correct

  auth_membership.user_id=4

This should not be correct

  auth_membership.user_id='4'

because auth_membership.user_id is a of type 'reference' and therefore
contains an integer. If you are using SQLite it is possible that
auth_membership.user_id contains a string if you forced it in there
(like you user executesql to do the insert) because SQLite does not
enforce types.

I think the problem is not wrong query but wrong data in db.

Is it possible that you did a manual insert of you set used a custom
membership table?

Massimo

On Apr 13, 11:43 pm, Sheldon <[email protected]> wrote:
> Newbie DAL question
>
> I'm new to web2py and I'm trying to get the following code to
> work, but it didn't return any results when there should have
> been two rows.
>
> user_id = '4'
> rows = db(
>     (db.auth_membership.user_id==user_id) &
>     (db.auth_membership.group_id==db.auth_group.id) &
>     (db.auth_membership.user_id==db.auth_user.id)
>     ).select( db.auth_group.role, db.auth_user.first_name,
> db.auth_user.id)
>
> So I tried the raw SQL that _select() generates:
>
> SELECT auth_group.role, auth_user.first_name, auth_user.id
> FROM auth_user, auth_group, auth_membership
> WHERE ((auth_membership.user_id=4
> AND auth_membership.group_id=auth_group.id)
> AND auth_membership.user_id=auth_user.id);
>
> Which didn't work until I put quotes around the 4 (user_id)
> which then worked as its supposed to:
>
> SELECT auth_group.role, auth_user.first_name, auth_user.id
> FROM auth_user, auth_group, auth_membership
> WHERE ((auth_membership.user_id='4'
> AND auth_membership.group_id=auth_group.id)
> AND auth_membership.user_id=auth_user.id);
>
> How can I force the DAL to generate quotes when a string is
> passed to the db()?  Is this something that is taken care of
> in the model?  If so, since this is an Auth table, how can I
> change it?
>
> Thanks,
> Sheldon


-- 
To unsubscribe, reply using "remove me" as the subject.

Reply via email to