def save(self): if self._id == None: try: i_share = db.prepare('INSERT INTO share (symbol, name) \ VALUES ($1,$2) RETURNING id') self._id = i_share(self.symbol, self.name)[0][0] except: raise else: try: update_share = db.prepare('update share set symbol=$1, name=$2 \ where id = $3') result = update_share(self.symbol, self.name, self._id) except: raise
def write_to_db(): print('writing: \n',self) try: i_quote = db.prepare("""INSERT INTO quote (share_id, price, volume) VALUES ($1,$2,$3) RETURNING id""") self._id = i_quote(self.share._id, self.price, self.volume) except: raise
def __init__(self, symbol, name): self.symbol = symbol self.name = name self.last_quote = None # Contains the last known quote self._id = None fetch_share = db.prepare('select id from share where symbol = $1 \ and name = $2') result = fetch_share(self.symbol, self.name) if len(result)<=0: self.save() if len(result)==1: self._id = result[0][0]
result = fetch_share(self.symbol, self.name) if len(result)<=0: self.save() if len(result)==1: self._id = result[0][0] def __str__(self): return (self.__repr__()+' '+self.symbol+' '+self.name) def save(self): if self._id == None: try: i_share = db.prepare('INSERT INTO share (symbol, name) \ VALUES ($1,$2) RETURNING id') self._id = i_share(self.symbol, self.name)[0][0] except: raise else: try: update_share = db.prepare('update share set symbol=$1, name=$2 \ where id = $3') result = update_share(self.symbol, self.name, self._id) except: raise if __name__ == '__main__': share = Share('SATC', 'SatCon Technology Corporation') print(share.save()) con = db.prepare('select * from share') print(con())
self != self.share.last_quote): self.share.last_quote = self write_to_db() else: print('skipping: ',share.symbol) def __str__(self): return (self.__repr__()+ '\n share: '+str(self.share)+ '\n price: '+str(self.price)+ '\n volume: '+str(self.volume)) def __eq__(self, other): def equal_price(a, b): return abs(a - b) < 1e-6 if isinstance(other,Quote): print('p1,p2', self.price, other.price, '\n', 'v1,v2', self.volume, other.volume) if (self.price == other.price and self.volume == other.volume): return True return False if __name__ == '__main__': import share share = share.Share('SATC', 'SatCon Technology Corporation') print(share.save()) con = db.prepare('select * from quote') print(con())
# print("get_tags_count " + str(get_tags_count())) # print("pages_by_100 " + str(pages_by_100)) # print("last_page_id " + str(last_page_id)) # print("from_page " + str(from_page)) # print("until_page " + str(until_page)) # sys.exit() for page in range(from_page, until_page): time.sleep(1) build_url = "http://api.stackexchange.com/2.2/tags?page=" + str(page) + "&pagesize=10&order=desc&sort=popular&site=stackoverflow" + str(ACCESS_KEY) print("> Fetching tags from page id: " + str(page)) try: api = jsonify(build_url) except Exception as e: print("> Exiting script: Likely due to execeding rate limit: e -> ", e) sys.exit() for badge in api['items']: is_moderator_only = badge['is_moderator_only'] is_required = badge['is_required'] has_synonyms = badge['has_synonyms'] name = badge['name'] tags_count = badge['count'] page_id = int(page) try: db.prepare(sql, (name, tags_count, is_moderator_only, is_required, has_synonyms, page_id)) db.commit() except Exception as e: print("> Existing script: Likely unknown error in database e -> ", e) sys.exit() db.rollback()