On Friday, January 4, 2013 10:08:22 AM UTC-8, andyd...@gmail.com wrote:
> Hi,
> 
> I'm hoping for some help on a python script I need to query an api. I'm not a 
> (Python) programmer ordinarily, but do plan to improve!
> 
> Specifically I have a for loop evaluating a database row, which I think I can 
> treat as a list. My [4] is a postgres boolean field, and I'm temporarily 
> stuck on how to evaluate this to determine if I use the values in [1].
> 
> Could I have some advice on what to change? Also do let me know if you can 
> recommend a good beginners python book.
> 
> Data example:
> 
> [13, 'Barbican Station', 'Barbican Station, London Underground Ltd., 
> Aldersgate St, London, EC1A 4JA', 
> '01010000E0E61000008851AB9E9803B9BF5BB6972294C2494000000000000000000000000000000000',
>  True]
> 
> 
> Code:
> 
> #!/usr/bin/python
> import psycopg2
> #note that we have to import the Psycopg2 extras library!
> import psycopg2.extras
> import sys
>  
> def main():
>     conn_string = "host='localhost' dbname='gisdb' user='postgres' 
> password='#########'"
>     # print the connection string we will use to connect
>     print "Connecting to database\n    ->%s" % (conn_string)
>  
>     conn = psycopg2.connect(conn_string)
>  
>     # HERE IS THE IMPORTANT PART, by specifying a name for the cursor
>     # psycopg2 creates a server-side cursor, which prevents all of the
>     # records from being downloaded at once from the server.
>     cursor = conn.cursor('cursor_tube', 
> cursor_factory=psycopg2.extras.DictCursor)
>     cursor.execute('SELECT * FROM tubestations LIMIT 1000')
>  
>     # Because cursor objects are iterable we can just call 'for - in' on
>     # the cursor object and the cursor will automatically advance itself
>     # each iteration.
>     # This loop should run 1000 times, assuming there are at least 1000
>     # records in 'my_table'
>     row_count = 0
>     for row in cursor:
>         row_count += 1
>         if row[4] = True
>             print row[1]
>             #print "row: %s    %s\n" % (row_count, row)
>  
> if __name__ == "__main__":
>     main()
> 
> Thanks!
> 
> 
> Andy

Your code is pretty close to working, you just need to make a couple 
modifications. You are using the equals sign as an assignment, not a 
comparison, although the comparison and value are unnecessary since the field's 
value is either true or false. And you're missing a colon at the end of the 
condition. Note also that since you are using a DictCursor you can use column 
names to reference your row's fields, I guessed on the field names, but you 
should get the idea.


for row in cursor:
    row_count += 1
    if row['active']:
        print row['name']
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to