def db_load(self): if self.db_exist == False: print ('Creating database structure...') call('python d_base.py', shell=True) print ('\nImporting data from .json file...') self.adding_items_to_db(self.list_with_data) self.addding_price_data_to_db(self.list_with_data) print ('Data import completed succesfully.') else: print ('\nUpdating database...') for obj in range(len(data)-1): _item = Item.query.filter(Item.href == data[obj]['href']).first() rooms_int, area_int, floor_int = self.test_item_before_adding(data[obj]) if _item is None: _object = Item(data[obj]['type'], data[obj]['name'], data[obj]['obj_address'], data[obj]['metro_station'], rooms_int, area_int, data[obj]['href'], data[obj]['source'], floor_int) db_session.add(_object) _item = Item.query.filter(Item.href == data[obj]['href']).first() dt_pr = Date_and_price(data[obj]['price'],datetime.datetime.strptime(data[obj]['date'], '%d-%m-%Y'), datetime.datetime.strptime(data[-1], '%d-%m-%Y %H:%M:%S'), _item.id) db_session.add(dt_pr) else: dt_pr = Date_and_price(data[obj]['price'],datetime.datetime.strptime(data[obj]['date'], '%d-%m-%Y'), datetime.datetime.strptime(data[-1], '%d-%m-%Y %H:%M:%S'), _item.id) db_session.add(dt_pr) db_session.execute("DELETE FROM date_and_price WHERE rowid NOT IN (SELECT min(rowid) FROM date_and_price GROUP BY price, date_of_creation,date_of_parsing,object_id)") db_session.commit() print ("\nDatabase updated.")
def addding_price_data_to_db(self, data): for est in range(len(data)-1): _item = Item.query.filter(Item.href == data[est]['href']).first() _item_test = Date_and_price.query.get(_item.id) dt_pr = Date_and_price(data[est].get('price'),datetime.datetime.strptime(data[est].get('date'), '%d-%m-%Y'), datetime.datetime.strptime(data[-1], '%d-%m-%Y %H:%M:%S'), _item.id) if _item_test is None: db_session.add(dt_pr) else: if (_item_test.price, _item_test.date_of_creation, _item_test.date_of_parsing, _item_test.object_id) == (dt_pr.price, dt_pr.date_of_creation, dt_pr.date_of_parsing, dt_pr.object_id): pass db_session.commit()
def adding_items_to_db(self, data): for obj in range(len(data)): rooms_int, area_int, floor_int = self.test_item_before_adding(data[obj]) testing_object = Item.query.filter(Item.href == data[obj]['href']).first() if testing_object is None: _object = Item(data[obj].get('type'), data[obj].get('name'), data[obj]['obj_address'], data[obj].get('metro_station'), rooms_int, area_int, data[obj].get('href'), data[obj].get('source'), floor_int) else: pass db_session.add(_object) db_session.commit()