summaryrefslogtreecommitdiffstats
path: root/database.py
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2011-10-13 18:23:28 +0200
committerThibaut Horel <thibaut.horel@gmail.com>2011-10-13 18:23:28 +0200
commit4edb2516e2c6bf2efab3f30f1a70dfc35b4b0f51 (patch)
treeefac8f4b0d1785571d28a4d51b6744d5451846d3 /database.py
parent2abfc67a428289e21005ee3acec6b7cd51a7c8fc (diff)
downloadbandit-4edb2516e2c6bf2efab3f30f1a70dfc35b4b0f51.tar.gz
Basis of database building
* database.sql contains de database schema * database.py populates the database
Diffstat (limited to 'database.py')
-rw-r--r--database.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/database.py b/database.py
new file mode 100644
index 0000000..c00ccd8
--- /dev/null
+++ b/database.py
@@ -0,0 +1,58 @@
+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()
+
+