Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. import datetime
  2. import pandas_datareader.data as web
  3. from dateutil.relativedelta import relativedelta
  4. import mysql.connector
  5. import xml.etree.ElementTree as ET
  6. import pandas as pd
  7. import os
  8.  
  9.  
  10.  
  11. def get_data(symbol):
  12. start = datetime.datetime(1990,01,01);
  13. end = datetime.datetime.now();
  14. # read the stock information from Google finance
  15. if symbol[0] == '^' or "VIX" in symbol : # we have to call Stooq reader
  16. df = web.DataReader(symbol, 'stooq')
  17. else:
  18. df = web.DataReader(symbol, 'yahoo', start, end)
  19.  
  20. # for backward compatible we have to add column called adj. price
  21. return df
  22.  
  23.  
  24.  
  25.  
  26. '''Main Function'''
  27. def main():
  28. os.chdir("/Users/zhenliu/stock_price")
  29. # init mysql connection
  30. # mysql -h sfdata.cf6ulue4mzq9.us-west-2.rds.amazonaws.com -P 3306 -u spr1ngf0rward -p
  31. cnx = mysql.connector.connect(user='spr1ngf0rward', password='DTXpecgdTQzijTMg2',
  32. host='sfdata.cf6ulue4mzq9.us-west-2.rds.amazonaws.com',
  33. database='sfdata')
  34. # queries
  35. get_symbols = ("SELECT symbol_id, symbol FROM symbol WHERE exchange_id in (1,2,24)")
  36. Insert_Price = ("INSERT INTO stock_prices"
  37. "(symbol, symbol_id, date, open, high, low, close, adj_close, volume, created_on)"
  38. "VALUES (%(symbol)s, %(symbol_id)s, %(date)s, %(open)s, %(high)s, %(low)s, %(close)s, %(adj_close)s, %(volume)s, %(created_on)s)")
  39. symbols = []
  40.  
  41. ## get symbol list
  42. cursor = cnx.cursor()
  43. cursor.execute(get_symbols)
  44. for (symbol_id, symbol) in cursor:
  45. symbols.append((symbol_id, symbol))
  46. cursor.close()
  47.  
  48. # insert stock price into database
  49. for (symbol_id, symbol) in symbols:
  50. try:
  51. data=get_data(symbol)
  52. data["symbol"] = symbol
  53. data["symbol_id"] = symbol_id
  54. data["date"] =datetime.datetime.now().date()
  55. data["created_on"]= datetime.datetime.now().date()
  56. order = ['symbol', 'symbol_id', 'date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close', 'created_on']
  57. data = data.ix[:, order]
  58. data.to_csv(symbol, index = False)
  59. print ("download %s success" % (symbol))
  60. except:
  61. print ("download %s fails" % (symbol))
  62.  
  63.  
  64.  
  65.  
  66. if __name__ == '__main__':
  67. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement