Evaluate postgres boolean field

andydtaylor at gmail.com andydtaylor at gmail.com
Fri Jan 4 13:08:22 EST 2013


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



More information about the Python-list mailing list