Loading CSV data in Google Apps Engine datastore
Edit your app.yaml, and add the following lines to the handlers: section:
- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin
1.Create hist.py similar to the type of data in CSV file.
1: from google.appengine.ext import db 2: 3: class HistoricalPrices(db.Model): 4: SYMBOL = db.StringProperty() 5: SERIES = db.StringProperty() 6: OPEN = db.FloatProperty() 7: HIGH = db.FloatProperty() 8: LOW = db.FloatProperty() 9: CLOSE = db.FloatProperty() 10: LAST = db.FloatProperty() 11: PREVCLOSE = db.FloatProperty() 12: TOTTRDQTY = db.FloatProperty() 13: TOTTRDVAL = db.FloatProperty() 14: TIMESTAMP = db.DateProperty() 15: DUMMY1 = db.StringProperty() 16: 2.Now Create the loader code StockLoader.py
1: import datetime 2: from google.appengine.ext import db 3: from google.appengine.tools import bulkloader 4: import hist 5: 6: class HistoryLoader(bulkloader.Loader): 7: def __init__(self): 8: bulkloader.Loader.__init__(self, 'HistoricalPrices', 9: [('SYMBOL', str), 10: ('SERIES', str), 11: ('OPEN', float), 12: ('HIGH', float), 13: ('LOW', float), 14: ('CLOSE', float), 15: ('LAST', float), 16: ('PREVCLOSE', float), 17: ('TOTTRDQTY', float), 18: ('TOTTRDVAL', float), 19: ('TIMESTAMP', 20: lambda x: datetime.datetime.strptime(x, '%d-%b-%Y').date()), 21: ('DUMMY1', str) 22: ]) 23: 24: loaders = [HistoryLoader]
3.Following commands to execute the above.
"D:Program FilesGooglegoogle_appengineappcfg.py" upload_data --config_file=StockLoader.py --filename=test.csv --kind=HistoricalPrices "D:devappsengineproxy"
where test.csv is something like following
UNITECH,EQ,82.9,83.8,82.45,82.8,82.8,82.3,19904383,1652618271.55,4-JAN-2010,
UNITECH,EQ,83.5,84.9,83.4,84.1,84,82.8,34197626,2882001214.7,5-JAN-2010,
UNITECH,EQ,84.5,85.45,83.2,84.85,84.7,84.1,34704003,2936028889.35,6-JAN-2010,
UNITECH,EQ,85.2,85.7,83.85,84.15,84.15,84.85,28855332,2446134892.4,7-JAN-2010,
last directory mentioned is the directory of the apps engine project directory where app.yaml file exists
ref http://code.google.com/appengine/docs/python/tools/uploadingdata.html