查词小字典
需求:根据给出的字典,当输入一个关键字或者单词,查出来相关的单词或者words
一、建立一个数据表
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/30 23:48 # @Author : heweijie # @File : createtable.py ''' 链接数据库 ''' import codecs from sqlalchemy import Column, MetaData, Table from sqlalchemy import Integer from sqlalchemy import String from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker engine = create_engine('mysql+pymysql://xiang:xiang@192.168.48.136/sqlalchemy') metadata = MetaData(engine) dictionary = Table('dictionary', metadata, Column('id', Integer, primary_key=True), Column('key', String(50)), Column('value', String(50)) ) metadata.create_all(engine)
输出:
mysql> desc dictionary;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| key | varchar(88) | YES | | NULL | |
| value | varchar(88) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
二、操作写入数据
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/30 21:19 # @Author : heweijie # @File : insertdata.py import codecs from sqlalchemy import Integer, Column, String, create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker engine = create_engine('mysql+pymysql://xiang:xiang@192.168.48.136/sqlalchemy?charset=utf8') Base = declarative_base() ##定义表结构 class Dictionary(Base): __tablename__ = 'dictionary' id = Column(Integer, primary_key=True) key = Column(String(50)) value = Column(String(50)) DBSession = sessionmaker(bind=engine) ##创建session对象 session = DBSession() class HandleData(object): ##定义一个操作的类 def __init__(self, dataFile): ##初始化文件 self.dataFile = dataFile def make_data_to_str(self): with codecs.open(self.dataFile, encoding='utf-8') as file: for (num, value) in enumerate(file): ##对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 line = value.strip().split() ##去掉删选出来的空格 diction =Dictionary(id=num+1, key=line[0], value=line[1]) ##重新定义字典 session.add(diction) ##增加重新定义的字典到数据库 session.commit() ##最后提交 if __name__ == '__main__': ##main 函数 handleData = HandleData('dictionary.txt') handleData.make_data_to_str() session.close()
三、查询一个数据
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/30 23:57 # @Author : heweijie # @File : selectData.py ''' ''' from sqlalchemy import create_engine, Integer, Column, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker engine = create_engine('mysql+pymysql://xiang:xiang@192.168.48.136/sqlalchemy?charset=utf8') ##连接数据库 Base = declarative_base() ##定义表结构 class Dictionary(Base): __tablename__ = 'dictionary' id = Column(Integer, primary_key=True) key = Column(String(50)) value = Column(String(50)) DBSession = sessionmaker(bind=engine) ##创建session对象 session = DBSession() word = input("please input your a word:") result =session.query(Dictionary).filter(Dictionary.key.like("%{0}%".format(word))).all() for each in result: print(each.id, each.key, each.value)
输出:
pls input a world: test
1517 contest n.,v.争夺,比赛
1518 contestant n.参赛人
5604 protest v.,n.抗议,反对
5605 protestant n.清教徒,新教徒
7159 test v.,n.测验,试验
7160 testify v.证明,证实
7161 testimony n.证据
当然 我们也可以写个前端(没有实现实际功能):
<html>
<body>
<title>This is a simple query system!!</title>
<h2>check the words</h2>
<input type="text" name="words">
<button>commit</button>
<br>
<br>
<div><textarea name="context">welcome ~!~</textarea></div>
</body>
</html>