def ran_word(self, bz): # 随机抽取一个单词和翻译不重复 try: idtxt = self.read_file() # 获取文件中id的列表 dao = Dao() if bz == 'None' or len(bz) == 0: sql = 'select * from kyword;' # 默认查询全部 else: bz = '%' + bz + '%' # 加上% 表示模糊搜索 sql = 'select * from kyword where time like "%s";' % (bz ) # 模糊搜索 tup = dao.call(sql) # 获取所有数据的大元组 idmysql = [] # 存放数据库id的列表 for i in range(len(tup)): idmysql.append(tup[i][0]) # 提取所有的id # 取差集 idmysql中有而idtxt中没有的 idlist = list(set(idmysql).difference(set(idtxt))) # 未学习过的id if len(idlist) != 0: # 判断词汇是否都学完 count = len(idlist) - 1 # 返回未训练单词的个数 random.shuffle(idlist) # 随机打乱列表 id = random.choice(idlist) # 随机抽取一个id idlist.remove(id) # 在列表中删除这个id s1 = 'select * from kyword where id = ' sid = s1 + str(id) + ';' tup = dao.call(sid) # 查询这个id的信息 return tup[0], count # 返回一维元组元组的列表和剩余个数 return直接结束循环 else: return 'ok', 0 # 表示词汇都学完了 except Exception as e: print(e) return 0, 0 # 表示获取单词信息失败
def lad_table(self, bz): # 加载表格数据 dao = Dao() # 实例化类 查询全部并按count属性由大到小排列 if bz == 'None' or len(bz) == 0: sql = 'select * from kyword order by count desc,time desc;' # 默认查询全部 else: bz = '%' + bz + '%' # 加上% 表示模糊搜索 sql = 'select * from kyword where time like "%s" order by count desc,time desc;' % ( bz) data = dao.call(sql) # 获取二维数组 self.model = QtGui.QStandardItemModel(1, 4) self.model.clear() # 清除表格内容 self.model = QtGui.QStandardItemModel(1, 4) # 设置行列数 self.model.setHorizontalHeaderLabels(["英文", "中文", "次数", "时间"]) # 表头字段 self.tableView.setModel(self.model) # 表格控件关联Model self.tableView.setColumnWidth(0, 140) # 第一个表头宽度 self.tableView.setColumnWidth(1, 900) # 第二个表头宽度 self.tableView.setColumnWidth(2, 50) # 第三个表头宽度 self.tableView.setColumnWidth(3, 800) # 第四个表头宽度 # 添加数据 for i in range(len(data)): self.model.setItem(i, 0, QtGui.QStandardItem(data[i][1])) zh = data[i][2].replace('\n', '') # 将换行符删除 self.model.setItem(i, 1, QtGui.QStandardItem(zh)) self.model.setItem(i, 2, QtGui.QStandardItem(str(data[i][3]))) self.model.setItem(i, 3, QtGui.QStandardItem(data[i][4]))
def __init__(self, id, url): self.id = id self.url = url self.dow = Downloader() self.html = self.dow(url) self.etree = html.etree self.selector = self.etree.HTML(self.html) self.dao = Dao()
def write(file, beizhu): w, c = CountNum(file) try: for i in range(len(w)): less = len(w) - i # 剩余单词个数 print(beizhu, "文件剩余单词数:", less) log('进度', 'info', '%s-文件剩余单词数:%d' % (beizhu, less)) en = w[i] if i > 0 and i % 50 == 0: time.sleep(30) time.sleep(random.uniform(5, 10)) # 沉睡0.5秒 chinese = yd.fanyi(en) # 调用yd模块中的fanyi()函数 if chinese[0] == en: # 单词拼写错误会返回原字符串,就不将其写入数据库 log('异常', 'warning', '%s-查询失败,来自文件-%s' % (en, beizhu)) # 查询失败写入日志中 elif chinese == 'errorCode': log('异常', 'warning', '%s-查询失败,来自文件-%s' % (en, beizhu)) # 查询失败写入日志中 else: ch = "\n" for zh in chinese: # 遍历返回的整个列表 ch = ch + zh + "\n" # 将每一项相加起来并换行 # 将查询过的单词写入数据库并累计查询的次数 dao = Dao() # 连接数据库 id, count, unit = dao.check(en) # 查询曾经查过的次数 if count == 0: # 如果没有查询过,就添加进去 count += c[i] # 增加一次 sql = "insert into kyword (en,zh,count,time) values (%s,%s,%s,%s);" re = dao.insert(sql, en, ch, count, beizhu) if re == 0: log('异常', 'error', '%s-写入数据库失败,来自文件-%s' % (en, beizhu)) # 写入日志中 elif count > 0: # 如果曾经查询过 count += c[i] # 就在次数上加一 if beizhu in unit: # 以前在这个地方出现过,就只增加次数 zong = unit else: zong = unit + '-' + beizhu # 现在录入的单元和以前录入的单元相加 i = dao.set(id, count, zong) # 修改次数和单元 if i == 0: log('异常', 'error', '%s-修改数据库失败,来自文件-%s' % (en, beizhu)) # 写入日志中 elif not id: log('异常', 'error', '%s-数据库查询失败,来自文件-%s' % (en, beizhu)) # 写入日志中 else: pass print(beizhu, "文件录入完成") log('进度', 'info', '%s-文件录入完成' % (beizhu)) except Exception as e: print(e) log('异常', 'error', '代码出错:%s' % (str(e)))
def select_project(): dao = Dao() sql = 'SELECT id,url FROM project WHERE "process_status"="false"' rs = dao.cursor.execute(sql).fetchall() print(len(rs)) for cell in rs: id, url = cell print(id) page = ProjectPage(id=id, url=index + url) page.run()
from padrao.Acao import Acao from padrao.ContextFrete import ContextFrete from padrao.StrategyLivro import StrategyLivro from padrao.StrategyTv import StrategyTv from padrao.StrategyViolao import StrategyViolao from padrao.Texto import Texto from model.Cliente import * from model.Livro import * from model.Tv import * from model.Violao import * from model.Pedido import * from model.Carrinho import * clienteDAO = Dao() produtoDAO = Dao() pedidoDAO = Dao() TIPO_VIOLAO = TipoViolao() TIPO_TV = TipoTc() TIPO_LIVRO = TipoLivro() def carregar_base(): violao = TIPO_VIOLAO.criar_produto() tv = TIPO_TV.criar_produto() livro = TIPO_LIVRO.criar_produto() controler_produto1 = Controller(violao, View()) controler_produto2 = Controller(tv, View())
import json import requests from util.stringUtil import * from dao.Dao import Dao from lxml import html import time home_page = r"https://experiment.com" url = r'https://experiment.com/discover/more' etree = html.etree dao = Dao(table='project') # con = sqlite3.connect("../data/experiment.db") # cursor = con.cursor() # cursor.execute("created") # def get(text): # dao_project = Dao(table='project') # dao_researchers = Dao(table='researchers') # rs = {} # researcher = {} # soup = BeautifulSoup(text, 'lxml') # projects = soup.find_all('div', attrs={'class': 'project-card'}) # for project in projects: # try: # rs['id'] = to_int(project['id']) # rs['href'] = project.a['href'] # rs['title'] = clean(str(project.find('h3', attrs={'class': 'project-title'}).a.string)) # footer = project.find('div', attrs={'class': 'project-card-footer'}) # rs['researcher'] = footer.div.a.string # rs['institution'] = footer.find('div', attrs={'class', 'institution'}).a.string # rs['url_researcher'] = footer.div.a['href']
from threading import Thread from dao.Dao import Dao from updaters.ividro.PriceReceiver import PriceReceiver log.basicConfig(level=log.DEBUG) class Updater(Thread): def __init__(self, receiver, dao): super(Updater, self).__init__() self._receiver = receiver self._dao = dao def run(self): log.debug("run") self._update() def _update(self): log.debug("update") current_price = self._receiver.get_current_price() log.debug("current_price: " + current_price) self._dao.insert(current_price) if __name__ == '__main__': dao = Dao() receiver = PriceReceiver() updater = Updater(receiver, dao) updater.start()
class Backer(object): backer = dict() def __init__(self, id, url): self.id = id self.url = url self.dow = Downloader() self.html = self.dow(url) self.etree = html.etree self.selector = self.etree.HTML(self.html) self.dao = Dao() @staticmethod def func(selector, xpath, order=-1): rs = None try: rs = selector.xpath(xpath) except IndexError as e: logger.error("可能不存在,请检查\t" + e) rs = "" except Exception as e: logger.error(e) rs = "" finally: if rs and order >= 0: return rs[order] else: if not rs: return '' return rs def run(self): self.backer['lab_notes_count'] = self.func( self.selector, xpath='//*[@id="updates-nav"]/a/h3/span/text()', order=0) self.backer['comment_count'] = self.func( self.selector, xpath='//*[@id="comments-nav"]/a/h3/span/text()', order=0) self.backer['started_count'] = self.func( self.selector, xpath='//*[@id="created_projects-nav"]/a/h3/span/text()', order=0) self.backer['backed_count'] = self.func( self.selector, xpath='//*[@id="backed_projects-nav"]/a/h3/span/text()', order=0) self.get_projects_backed() self.get_projects_started() self.dao.update(key='id', value=self.id, table='backers', data=self.backer) self.dao.update(key="id", value=self.id, table='backers', data={'process_status': "true"}) def get_projects_started(self): selector = self.func(self.selector, xpath='.//*[@id="created_projects"]', order=0) self.backer['started'] = self.get_projects_card(selector) def get_projects_backed(self): selector = self.func(self.selector, xpath='.//*[@id="backed_projects"]', order=0) self.backer['backed'] = self.get_projects_card(selector) def get_projects_card(self, node): # 解析card rs = {} temp = [] try: for cell in node.xpath('.//*[@class="project-card"]'): rs.clear() rs['id'] = to_int(self.func(cell, xpath='./@id', order=0)) rs['url'] = self.func(cell, xpath='./div[2]/h3/a/@href', order=0) rs['title'] = self.func(cell, xpath='./div[2]/h3/a/text()', order=0) temp.append( str(rs['id']) + '\t' + rs['title'] + '\t' + rs['url']) return '\n'.join(temp) except Exception: return "" def update_status(self): # 更新处理状态为完成 self.dao.update(table='backers', data={'process_status': "true"})
def select_backer(): dao = Dao() sql = 'SELECT id,username FROM backers WHERE "process_status"="false"' rs = dao.cursor.execute(sql).fetchall() print(len(rs)) return rs
def get_last(limit=None): dao = Dao() if limit: return jsonify(log=dao.get(limit)) return jsonify(log=dao.get())