import urllib import csv import psycopg2 from sys import argv from os.path import basename, splitext def yahooCsv(name): params = urllib.urlencode({ "s" : name, "a" : 0, "b" : 1, "c" : 1990, "d" : 11, "e" : 30, "f" : 2010, "g" : "d", "ignore" : ".csv" }) handler = urllib.urlopen("http://ichart.finance.yahoo.com/table.csv?{}" .format(params)) return csv.DictReader(handler) def addTickerHistory(name, handler, cursor, conn): cursor.execute("SELECT stockid FROM stock WHERE ticker=%s",(name,)) if cursor.rowcount == 0: cursor.execute("INSERT INTO stock(ticker) VALUES (%s) RETURNING stockid",(name,)) conn.commit() id = cursor.fetchone()[0] else: id = cursor.fetchone()[0] def clean(field): if field == "NA": return None for row in handler: cursor.execute("INSERT INTO history(date, stockID, open) VALUES (%s, %s, %s)", (row['Date'], id, row['Open'])) conn.commit() if __name__ == '__main__': database = argv[1] user = argv[2] password = argv[3] conn = psycopg2.connect(database=database, user=user, password=password) cursor = conn.cursor() filename = argv[4] handler = open(filename,"r") ticker = splitext(basename(filename))[0] csvHandler = csv.DictReader(handler) addTickerHistory(ticker, csvHandler, cursor, conn) cursor.close() conn.close() handler.close()