Python 英语单词本

python pymysql re requests socket库的简单运用

要考试了,这里用所学的知识做一个实例

pymysql库

这个库是用来连接数据库的,使用数据库语句在python里创建表和数据库

English.py

import pymysql
def init():            #创建数据库和表
    sql_data='create database English'
    sql_table='create table word(id int(100),English char(50),Chinese varchar(100),time varchar(50))default charset=utf8;'
    DB=pymysql.connect(host='localhost',password='1234',charset='utf8',user='root')
    cursor=DB.cursor()
    cursor.execute(sql_data)
    cursor.execute('use English')
    cursor.execute(sql_table)
init()

requests库

通过python来获取网页信息
function.py这个文件来实现单词本的各种功能

function.py

import time
import pymysql
import requests

DB = pymysql.connect(host='localhost', password='1234', charset='utf8', user='root', database='English')
cursor = DB.cursor()

class Func():
    def __init__(self):
        self.sql_all = 'select * from word'

    def id(self):  # 获取id值
        cursor.execute(self.sql_all)
        fin = cursor.fetchall()
        if fin:
            global id
            self.id = fin[-1][0] + 1
        else:
            self.id = 1


    def translate(self):
        url='https://fanyi.baidu.com/sug'
        headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0'}
        while True:
            word = input('请输入被翻译的单词或句子(q==quit)')
            if word == 'q':
                break
            data={'kw':word}
            re=requests.post(url=url,headers=headers,data=data)
            a=re.json()
            for i in a['data']:
                print(i['k'] , '\t' , i['v'])

    def insert(self):  # 插入数据
        while True:
            e = input('请输入英文 (q=quit)')
            if e == 'q':
                break
            c = input('请输入中文')
            time1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
            sql_insert = 'insert into word values(%d,"%s","%s","%s");' % (self.id, e, c, time1)
            cursor.execute(sql_insert)
            DB.commit()
            print(e, c, '以收入数据库')
            self.id = self.id + 1



    def show(self):  # 显示所有单词
        cursor.execute(self.sql_all)
        fin = cursor.fetchall()
        print('序号      英文            中文              时间')
        for i in fin:
            if i != fin[0]:
                print()
            for j in i:
                print(j,end='      ')
        print()


    def show_something(self):
        a = input('请输入以什么为开头的模糊查找')
        sql_something = 'select * from word where english like "{0}%"'.format(a)
        #print(sql_something)
        print('序号      英文            中文              时间')
        cursor.execute(sql_something)
        a = cursor.fetchall()
        for i in a:
            if i != a[0]:
                print()
            for j in i:
                print(j,end='      ')
        print()

    def delete(self):
        a = int(input('请输入单词序号:  '))
        sql_del = 'delete from word  where  id={0} '.format(a)
        cursor.execute(self.sql_all)
        print('序号      英文            中文              时间')
        l = cursor.fetchall()
        for i in l:
            if i[0] == a:
                for j in i:
                    print(j,end='      ')
                print()
        #print(sql_del)
        cursor.execute(sql_del)
        DB.commit()


def main():
    fun = Func()
    fun.id()
    print('欢迎来到    <小茅背单词>\n选择功能  1.背单词 2.查翻译 3.显示所有库中单词 4.显示以什么字符开头的单词'
        ' 5.删除单词 6.开启远程背单词功能 7.q==quit')
    while True:
        ch = input('请输入序号 (s=show)')
        if ch == '1':
            fun.insert()
        if ch == '2':
            fun.translate()
        if ch == '3':
            fun.show()
        if ch == '4':
            fun.show_something()
        if ch == '5':
            fun.delete()
        if ch == '6':
            import remotely
        if ch == 's':
            print('欢迎来到    <小茅背单词>\n选择功能  1.背单词 2.查翻译 3.显示所有库中单词 4.显示以什么字符开头的单词'
                ' 5.删除单词 6.开启远程背单词功能 7.q==quit')
        if ch == 'q':
            print('Bye')
            break

main()

def  rec():
    import re
    Pattern = re.compile(r"^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)$")
    word=input('word')
    if Pattern.match(word):
        print('成功')

通过bind绑定ip地址使远程的用户可以连接到remotely

remotely.py

import pymysql
import socket
import time
DB = pymysql.connect(host='localhost', password='1234', charset='utf8', user='root', database='English')
cursor = DB.cursor()
class reFunc():
    def __init__(self):
        self.sql_all = 'select * from word'

    def id(self):  # 获取id值
        cursor.execute(self.sql_all)
        fin = cursor.fetchall()
        if fin:
            global id
            self.id = fin[-1][0] + 1
        else:
            self.id = 1


    def insert(self):  # 插入数据
        while True:
            e = con.recv(1024).decode('utf-8')
            if e == 'q':
                s.close()
                break
            c = con.recv(1024).decode('utf-8')
            time1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
            sql_insert = 'insert into word values(%d,"%s","%s","%s");' % (self.id, e, c, time1)
            message = '{0},{1}以收入数据库'.format(e, c)
            con.send(message.encode('utf-8'))
            cursor.execute(sql_insert)
            DB.commit()
            print(e, c, '以收入数据库')
            self.id = self.id + 1




fun = reFunc()
fun.id()    # 先获取id值
s = socket.socket()
s.bind(('10.104.45.223', 8888))
print('已准备')
s.listen(5)
con, address = s.accept()
print('连接成功')
message = ('欢迎来到    <小茅背单词>\n     远程功能,你所输入的数据将会存放在主机库中')
con.send(message.encode('utf-8'))
fun.insert()

socket

这是给远程用户使用的,两个用户连接时首先得相互ping通

客户机.py

import socket
s=socket.socket()
s.connect(('10.104.45.223',8888))
rep=s.recv(1024).decode('utf-8')
print(rep)
def select1():
    while True:
        message=input('请输入英文 q == quit:')
        if message == 'q':
            s.send(message.encode('utf-8'))
            s.close()
            break
        else:
            s.send(message.encode('utf-8'))
            message=input('请输入中文')
            s.send(message.encode('utf-8'))
            rep=s.recv(1024).decode('utf-8')
            print(rep)

select1()
posted @ 2021-12-28 10:48  supermao12  阅读(170)  评论(0编辑  收藏  举报