Am Samstag, 4. Juni 2005 17:23 schrieb Jeff Elkins: > Within this same app, I've got a search function working, but I need the > rownumber when a record is fetched. > > sql = """select * from address where %s = %%s""" % arg1.lower() > cursor.execute(sql, (arg2,)) > item = cursor.fetchone () > index = cursor.rownumber > > At this point, the record is on the screen, but cursor.rownumber doesn't > reflect the actual rownumber...it always returns 1. How can I obtain the > actual row number for the displayed record?
You're relying on the fact that rows never move... And IMHO this premise is
false (at least it's not what a relational database has to guarantee for a
table).
What you might do:
sql = """select prim_key from address where %s = %%s""" % arg1.lower()
cursor.execute(sql,(arg2,))
prim_key = cursor.fetchone()[0]
And then pass prim_key to the actual display function:
def fetch_item(prim_key=None,row_number=None):
if prim_key:
sql = """select * from address where prim_key = %s"""
args = (prim_key,)
# We fetch by primary key, only one row of one in table as
primary
# key is unique.
row_number, rows = 1, 1
elif row_number:
sql = """select * from address limit %i,1""" % (row_number,)
args = ()
# We fetch a specified row_number, we already know number of
rows in
# query.
rows = None
else:
sql = """select * from address"""
args = ()
# We fetch everything to get row count. Returned value is row 1,
# after query rows contains number of rows fetched.
row_number = 1
rows = 0
cursor.execute(sql,args)
if rows == 0:
# I don't know what MySQLdb uses, probably something like
this...
rows = cursor.rowcount
return cursor.fetchone(), row_number, rows
Now, to use the function in your script, just test for certain parameters,
such as a passed primary key (in response to a search operation), or a passed
total row count and current row_number. The function takes care of the rest
of processing.
HTH!
--
--- Heiko.
see you at: http://www.stud.mh-hannover.de/~hwundram/wordpress/
pgpkcWN8yLuZq.pgp
Description: PGP signature
-- http://mail.python.org/mailman/listinfo/python-list
