import pgdb import GPS class Database: """ This class wraps all of the operations that we'd like to perform on the census database. Most of the utility scripts will just call one or two methods from within this class. """ def __init__(self, _host, _database, _username, _srid): self.connection = pgdb.connect(host=_host, database=_database, user=_username) self.srid = _srid def __del__(self): self.connection.close() def find_average_population_density(self, coords): """ Find the average population density at a set of GPS coordinates. """ cursor = self.connection.cursor() query = """ SELECT population_density FROM (sf1_blocks INNER JOIN tiger ON sf1_blocks.tiger_blkidfp00=tiger.blkidfp00) WHERE ST_Contains(tiger.the_geom, ST_SetSRID(ST_Point(%.6f, %.6f), %d)); """ sql_params = (coords.longitude, coords.latitude, self.srid) cursor.execute(query, sql_params) rows = cursor.fetchall() if len(rows) > 0: return rows[0][0] else: return None