コード例 #1
0
    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  # 表示获取单词信息失败
コード例 #2
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]))
コード例 #3
0
 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()
コード例 #4
0
ファイル: inputWord.py プロジェクト: zyb-coder/YouDao
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)))
コード例 #5
0
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()
コード例 #6
0
ファイル: main.py プロジェクト: mateusjf/PythonEcommerce
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())
コード例 #7
0
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']
コード例 #8
0
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()
コード例 #9
0
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"})
コード例 #10
0
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
コード例 #11
0
def get_last(limit=None):
    dao = Dao()
    if limit:
        return jsonify(log=dao.get(limit))
    return jsonify(log=dao.get())