Hi Milos,
To check whether a record exists I'm using this:
exist (ZSQL method): SELECT count(*) as I FROM ... WHERE ... ;
Python Script: for x in exist(m_id=m_id): if x.i==0: print "no data" else: print "there are some data"
This works... but it's strange to use "for" for it... is there a simpler method? Just an "if", wthout "for"?
if exist(m_id=m_id)[0][0]: ... or if exist(m_id=m_id)[0].i: ... The object returned by a ZSQL method is a list of rows. The fields of the row can be accessed either by name (as attributes of the row) or by number.
I tried to adapt the "exist" ZSQL to show a column from the table: exist2 (ZSQL method): SELECT count(*) as I, fname FROM ... WHERE ... ;
It fails and it recommends to put "fname" into GROUP BY. So: exist3 (ZSQL method): SELECT count(*) as I, fname FROM ... WHERE ... GROUP BY fname;
What you seem to miss is that an SQL query always returns a set of rows of uniform structure. That is, you cannot have "a value and a list of values". In your specific case, the situation is much simpler. The number of items is the number of rows returned. So, exist4(ZSQL method): SELECT fname FROM ... WHERE...; In your python script: names = exist4(m_id=m_id) if(not names): # if there is no data, names is an empty list print "no data" else: for name in names: ... You can get the number of names as len(names). HTH, Shai.