【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)
全系列目录:
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(一)
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)
- 项目的github地址
实习的工作都这么忙,真是的。。
好不容易有时间写点博客,一鼓作气完成算了
承接上文
本文完成对本地数据库模块的开发。
由于只是非常轻量级的应用,就不劳mysql大驾了,来个sqlite就可以了,本地db文件也好读取。
这里我们可以多实现一个功能:难词系统。
定义一个难词为查询多次达到某个阀值的词,并记录本地数据库中所有词汇的查询次数。
当有词语达到这个标准时,将该词添加到本地数据库中的难词表,并提供一个方法供其他模块查询难词表。
可以看出,难词系统决定了本地数据模块这个部分和response模块不同,需要提供多个模块供上层操作,包括:
0、提供查询难词表的接口。
1、提供更新每个词汇查询次数的接口。
2、提供插入词汇的接口。
3、和response模块一样,给定一个词汇,查询其含义的接口。
具体代码如下:
# -*- coding:utf-8 -*-
__author__ = 'wmydx' import sqlite3 class LocalDict:
def __init__(self):
self.con = None
self.limit = 4
self.setup_connect() def setup_connect(self):
self.con = sqlite3.connect('./word.db')
create_table = '''CREATE TABLE IF NOT EXISTS words
(
word text,
explain text,
net_explain text,
sentence text,
times int
);
'''
self.con.execute(create_table)
create_table = '''CREATE TABLE IF NOT EXISTS hard
(
word text,
explain text,
net_explain text,
sentence text,
times int
);
'''
self.con.execute(create_table)
self.con.text_factory = str def is_a_hard_word(self, diction):
print diction['times'] == self.limit
return diction['times'] == self.limit # prevent mutiple insert, so use == instead of >= def update_word_times(self, diction):
curs = self.con.cursor()
update_sql = '''
UPDATE words SET times=? WHERE word=?
'''
curs.execute(update_sql,(diction['times'], diction['word'])) def get_hard_word(self):
curs = self.con.cursor()
select_sql = '''
SELECT word FROM hard;
'''
curs.execute(select_sql)
names = [d[0] for d in curs.description]
rows = [dict(zip(names, row)) for row in curs.fetchall()]
return rows def get_eng_word_from_db(self, word):
curs = self.con.cursor()
select_sql = '''
SELECT * FROM words WHERE word=\'%s\';
''' % word
curs.execute(select_sql)
names = [d[0] for d in curs.description]
rows = [dict(zip(names, row)) for row in curs.fetchall()]
return rows def process_dict(self, diction):
for key in diction.keys():
if diction[key] == -1:
diction[key] = ''
return diction # before pass diction to this method, u need to add word and times in diction
def insert_word_to_db(self, diction, table):
diction = self.process_dict(diction)
insert_sql = '''
INSERT INTO %s (word,explain,net_explain,sentence,times) VALUES
(?,?,?,?,?);
''' % table
self.con.execute(insert_sql, (diction['word'], diction['explain'],
diction['net_explain'], diction['sentence'], diction['times'])) def turn_off_db(self):
self.con.commit()
self.con.close() if __name__ == '__main__':
db = LocalDict()
db.setup_connect()
到此为止,我们开发了一个完整的webdict,平常看英文原著的时候,快捷命令一打就随手查吧
免得开浏览器然后。。。=_+
【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)的更多相关文章
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(一)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw
负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- 嵌入式Linux驱动开发日记
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...
- 用VSCode开发一个基于asp.net core 2.0/sql server linux(docker)/ng5/bs4的项目(1)
最近使用vscode比较多. 学习了一下如何在mac上使用vscode开发asp.netcore项目. 这里是我写的关于vscode的一篇文章: https://www.cnblogs.com/cgz ...
- Linux系统启动那些事—基于Linux 3.10内核【转】
转自:https://blog.csdn.net/shichaog/article/details/40218763 Linux系统启动那些事—基于Linux 3.10内核 csdn 我的空间的下载地 ...
- 轻易实现基于linux或win运行的聊天服务端程序
对于不了解网络编程的开发人员来说,编写一个良好的服务端通讯程序是一件比较麻烦的事情.然而通过EC这个免费组件你可以非常简单地构建一个基于linux或win部署运行的网络服务程序.这种便利性完全得益于m ...
随机推荐
- java基础---->java调用oracle存储过程(转)
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.今天 ...
- Java编码浅析(注意区分三个概念)(转)
编码: (1)外部资源的字符集-----没有读入jvm中的数据都是外部资源 (2)jvm中数据的字符集-----都是unicode (1)和(2)之间发生交互时,如果不指定编码,则使用JVM平台默认字 ...
- uu云验证码识别平台,验证码,验证码识别,全自动验证码识别技术,优优云全自动打码,代答题系统,优优云远程打码平台,uu云打码
uu云验证码识别平台,验证码,验证码识别,全自动验证码识别技术,优优云全自动打码,代答题系统,优优云远程打码平台,uu云打码 优优云验证码识别答题平台介绍 优优云|UU云(中国公司)是全球唯一领先的智 ...
- Java经典23种设计模式之创造型模式(一)
设计模式被称为程序猿的内功,之前零零散散的看过一大部分,但自己么有总结过.故此次在这里总结下.值得一提的是,设计模式并不是Java所特有.由于一直搞Android.这里就用Java为载体.最经典的设计 ...
- NET之全平台一体化
NET之全平台一体化的体验 一.前言 近来利用空闲时间研究了一下Xamarin的技术,想想既然提供了如此好的支持,就该尝试一切可能,来一个”大小通吃“. 何为全平台:APP包括Android.IOS. ...
- 使用和制作patch文件
使用和制作patch文件 发表时间: 2007-2-13 20:57 作者: superuser 来源: 迷茫人 字体: 小 中 大 | 打印 原文http://www.linuxsir. ...
- JQuery是继prototype之后又一个优秀的Javascript库
JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Oper ...
- poj3206(bfs+最小生成树)
传送门:Borg Maze 题意:有一个迷宫,里面有一些外星人,外星人用字母A表示,#表示墙,不能走,空格可以走,从S点出发,在起点S和A处可以分叉走,问找到所有的外星人的最短路径是多少? 分析:分别 ...
- poj2096(概率dp)
题目连接:http://poj.org/problem?id=2096 题意:一个程序有m个子系统,要找出n种bug,某人一天找n种bug中的一种,求出他找出n种bug并且每个子系统中都有bug的天数 ...
- COCO-Android开发框架公布
一. COCO-Android说明 二. COCO-Android结构图 三. COCOBuild 四. COCOFrame 一.COCO-Android说明 1. COCO-Android是支撑An ...