Hello,
I have a problem looking for rows in my database. I have a method like this:
def getBoughtItems():
for item in self.allItems:
_itemId = item['itemId']
rowsItems = self.db(self.db.tableItems.itemId==_itemId)
if rowsItems.count() > 0:
_id = rowsItems.select().first().id
print 'userId='+str(self.userId)+' itemId='+str(_id)
boughtItems =
self.db(self.db.boughtItems.userId==self.userId
and self.db.boughtItems.itemId==_id)
if boughtItems.count() == 0:
print '1.NO'
item['bought'] = 'NO'
else:
print '2.YES'
item['bought'] = 'YES'
else:
print '3.NO'
item['bought'] = 'NO'
...
And in my databases I have this:
In db.auth >>
auth_user.id<https://192.168.1.128:8000/dianaappv1/appadmin/select/db?orderby=auth_user.id>1
auth_user.username<https://192.168.1.128:8000/dianaappv1/appadmin/select/db?orderby=auth_user.username>userA
...
auth_user.id<https://192.168.1.128:8000/dianaappv1/appadmin/select/db?orderby=auth_user.id>2
auth_user.username<https://192.168.1.128:8000/dianaappv1/appadmin/select/db?orderby=auth_user.username>userB
...
In db.tableItems>>
tableItems.id 1 tableItems.name item1 ...
tableItems.id 2 tableItems.name item2 ...
tableItems.id 3 tableItems.name item3 ...
In db.boughtItems>>
boughtItems.id 1 boughtItems.userId 1 boughtItems.itemId 1
boughtItems.id 2 boughtItems.userId 2 boughtItems.itemId 2
Well, if I run this method I got this output:
userId=1 itemId=1
2.YES
userId=1 itemId=2
2.YES
userId=1 itemId=3
1.NO
It seems to me that "self.db(self.db.boughtItems.userId==self.userId and
self.db.boughtItems.itemId==_id)" selects rows taking into accout only the
second condition (self.db.boughtItems.itemId==_id) and not the first one.
I'm sure I'm missing something, but I can't find out what it is. Could you
tell me what I am doing wrong?
Thank you very much and kind regards!
--