I tried posting this earlier, but it doesn't seem to have appeared yet - so apologies if this comes up twice.
I am writing a web2py application which accepts a UK postcode then provides information about nearby postcodes. I have tried two methods, both of which work fine when the number of nearby postcodes is relatively few (less than a hundred).
Method 1 uses the contains method as follows
query &= db.t_properties.f_postcode.contains(result)
where
result is the list of nearby postcodes
Method 2 does the query first and then uses exclude to eliminate the unwanted rows as follows
rows.exclude(lambda row: row.f_postcode not in result)
However, when the list of postcodes is larger (>about 100), both methods are failing. Method 1 appears to fail because of inherent limitations of sqlite (
https://sqlite.org/limits.html - SQLITE_LIMIT_VARIABLE_NUMBER - albeit that refers to a limit of 999 rather than 99). Method 2 fails with the message:
<type 'exceptions.RuntimeError'> maximum recursion depth exceeded in cmp
Now, I'm pretty sure that I can solve it by moving to MySQL or another db but I'm pretty sure that I'm not doing the query in the optimal way. Can anyone give any advice as to the correct / most efficient way to accomplish this?
thanks
Rob.