import zlib
import zmq.green as zmq
import simplejson
import MySQLdb as mdb
import sys
def main():
con = mdb.connect('localhost', 'elite_eddn', 'password', 'elite_eddn');
context = zmq.Context()
subscriber = context.socket(zmq.SUB)
subscriber.setsockopt(zmq.SUBSCRIBE, "")
subscriber.connect('tcp://eddn-relay.elite-markets.net:9500')
while True:
market_json = zlib.decompress(subscriber.recv())
market_data = simplejson.loads(market_json)
if market_data['$schemaRef'] == 'http://schemas.elite-markets.net/eddn/commodity/1':
softwareVersion = market_data['header']['softwareVersion']
gatewayTimestamp = market_data['header']['gatewayTimestamp']
softwareName = market_data['header']['softwareName']
uploaderID = market_data['header']['uploaderID']
buyPrice = market_data['message']['buyPrice']
timestamp = market_data['message']['timestamp']
stationStock = market_data['message']['stationStock']
systemName = market_data['message']['systemName'].encode('string-escape')
stationName = market_data['message']['stationName'].encode('string-escape')
demand = market_data['message']['demand']
sellPrice = market_data['message']['sellPrice']
itemName = market_data['message']['itemName'].encode('string-escape')
with con:
cur = con.cursor()
insert_stmt = "INSERT INTO commodities (softwareVersion, gatewayTimestamp, softwareName, uploaderID, buyPrice, timestamp, \
stationStock, systemName, stationName, demand, sellPrice, itemName, server_time) VALUES \
('%s','%s','%s','%s',%s,'%s',%s,'%s','%s',%s,%s,'%s',NOW())"
data = (softwareVersion,gatewayTimestamp,softwareName,uploaderID,buyPrice,timestamp,stationStock,systemName,stationName, \
demand,sellPrice,itemName)
do_insert = insert_stmt % data
cur.execute(do_insert)
print "Row Inserted for ",systemName,stationName,itemName,cur.rowcount
sys.stdout.flush()
if __name__ == '__main__':
main()