def shutdown(self): self.proto.send('Exiting. Good bye.','channel') self.proto.close() self.mem.commit_history() # make sure we store all the history of this session # close up anything in the db as well conn.commit() conn.close()
def updateCalendar(self): tcalendar = self.tcalendar days = self.calendar.monthdayscalendar(self.year, self.month) for y in range(6): for x in range(7): tcalendar.setItem(y, x, QTableWidgetItem('')) self.info.clear() for y, row in enumerate(days): for x, item in enumerate(row): if item == 0: item = '' else: if not conn.isOpen(): if not conn.open(): raise DatabaseError query = QSqlQuery(conn) query.prepare( 'SELECT price, count, category FROM outgones WHERE\ (day = {} and month = {} and year = {})'.format( item, self.month, self.year)) query.exec_() if not query.isSelect(): raise DatabaseError s = 0 query.first() while query.isValid(): val = query.value('price') * query.value('count') s += val self.info.addData(query.value('category'), val) query.next() if s == 0: item = str(item) else: item = '{}: {}'.format(item, round(s, 2)) conn.close() tcalendar.setItem(y, x, QTableWidgetItem(item)) tcalendar.resizeColumnsToContents() tcalendar.resizeRowsToContents() month = Months(self.month).name year = str(self.year) self.bdate.setText('{}, {}'.format(month, year)) w = sum(tcalendar.columnWidth(i) for i in range(7)) + 33 h = sum(tcalendar.rowHeight(i) for i in range(7)) + 198 self.resize(w, h) self.parent().setFixedSize(w, h)
def getNewMessages(): cur.execute( ''' SELECT time_stamp, message_type, message FROM emergency_message WHERE reviewed = FALSE; ''' ) messages = cur.fetchall() message_count = len(messages) if message_count == 0: return False message_string = '%s new emergency messages have been added to the database!\n\n----------------------------------------\n' % ( str(message_count)) for message in messages: message_string += '''message time: {0}\n message type: {1}\n message: {2}\n------------------------------------\n '''.format( *message) cur.execute(''' UPDATE emergency_message SET reviewed = TRUE; ''') conn.commit() cur.close() conn.close() return message_string
async def main(): sem = asyncio.Semaphore(10) async with aiohttp.ClientSession() as session: with open('data_files/char_9_strokes.json', 'r') as f: middle_chars = json.load(f) with open('data_files/char_by_freq.json', 'r') as f: last_chars = json.load(f) last_name = '馮' futures = [] # batch call for batch_no, first_names in enumerate( get_first_names(middle_chars, last_chars)): full_names = [ last_name + first_name[0] + first_name[1] for first_name in first_names ] names_in_db = batch_get_names_from_db(full_names) missing_full_names = set(full_names) - set(names_in_db) logging.debug(f'To fecth {missing_full_names}') if len(missing_full_names) == 0: continue for full_name in missing_full_names: futures.append( query_name(session, sem, full_name[1:], full_name[0])) ret = await asyncio.gather(*futures) logging.debug(f'ret = {ret}') futures = [] to_insert = [{ 'name': full_name, 'score': score, 'luck': luck } for full_name, (score, luck) in ret] logging.debug(f'to_insert = {to_insert}') batch_insert_names_and_scores(to_insert) if batch_no >= 100: break conn.close()
) #BeautifulSoup - это обертка для парсинга, он принимает два значения: 1)html код парсинга 2)тип парсера который следует использовать lxml - Python биндинг популярнойи и очень быстрой С библиотеки collect = soup.find_all( 'a', class_='link_gtm-js link_pageevents-js ddl_product_link') #product_links = (tag.get('href') for tag in collect.find('a'))#Берем ссылки классов тегов, как бы обошли сам тег а и взли только его ссылки for link in collect: linka = link.get('href') print(linka) get_product_info(linka) #вызываем функцию try: if data['price'] == -1: continue cur = conn.cursor() # создаём объект для работы с запросами o = int( data['price'].replace(" ", "") ) # на сайте цена в виде строки мы приводим её к числовому типу и удаляем пробелы из неё cur.execute( sql, (data['link'], data['name'], o) ) # преобразуем строку, попутно подставляя в неё переменные в запрос conn.commit( ) #отправляем запрос в базу данных, для изменения данных time.sleep(20) except MySQLdb.Error as err: print("Query error: {}".format( err)) #выводит ошибку если она есть conn.rollback() #отменяет изменения cur.close() #закрывает курсор conn.close() #закрывает коннект except MySQLdb.Error as err: print("Connection error: {}".format(err)) conn.close()
import MySQLdb from db import conn cur = conn.cursor() query = "DELETE FROM video_cards" cur.execute(query) conn.commit() cur.close() conn.close()