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()

Python 英语单词本的更多相关文章

  1. python实现单词本功能

    #实现简单的单词本:# 可以添加单词和词义,当所添加的单词已经存在 让用户知道:# 查找单词,单词不存在时,让用户知道# 删除单词,当删除的单词不存在时,让用户知道# 以上功能无限制操作,直到用户输入 ...

  2. 小白学习Python英语基础差怎么办,都帮你想好拉!看这里

    运算符与随机数 1.module:模块 2.sys(system):系统 3.path:路径 4.import:导入 5.from:从- 定义函数与设定参数 1.birthday:出生日期 2.yea ...

  3. 还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!

    学英语广告 最近也许是刚开学的原因,不管是公众号,还是刷抖音,导出都能看到关于学英语.背单词的广告. 不知道现在学生们背单词买的什么辅导材料.反正我们上学那会,<星火阅读>特别的火.记得当 ...

  4. python百科

    Python 编辑词条 添加义项名 B 添加义项 ? Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第 ...

  5. Python入门教程(3)

    人生苦短,我学Pyhton Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于199 ...

  6. Python入门教程(2)

    人生苦短,我玩蛇0.0! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991 ...

  7. Python入门教程(1)

    人生苦短,我用Python! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于19 ...

  8. Python基础入门教程(4)(数据类型)

    人生苦短,我学Pyhton Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于199 ...

  9. Python基础入门教程(3)

    人生苦短,我学Pyhton Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于199 ...

随机推荐

  1. 多线程高级篇1 — JUC — 只弄到处理高并发集合问题

    1.线程池 1.1).什么是线程池? 池( pool ),就是一个容器,所以线程池就是把多个线程对象放到一个容器中 1.2).如何创建线程池? 先来了解几个常识 Executor -- 这是一个接口( ...

  2. 如何在 ASP.NET Core 中构建轻量级服务

    在 ASP.NET Core 中处理 Web 应用程序时,我们可能经常希望构建轻量级服务,也就是没有模板或控制器类的服务. 轻量级服务可以降低资源消耗,而且能够提高性能.我们可以在 Startup 或 ...

  3. Docker快速上手入门

    Docker 什么是Docker? Docker就是一种虚拟化的技术 可以通过Docker快速的下载使用第三方技术,方便搭建环境 目的:Securely build,share and run any ...

  4. @RequestBody配合@Valid 校验入参参数

    自定义一个Controller import com.example.demo.pojo.User; import org.springframework.web.bind.annotation.Po ...

  5. JavaBean的命名规则

    JavaBean的命名规则Sun 推荐的命名规范1 ,类名要首字母大写,后面的单词首字母大写2 ,方法名的第一个单词小写,后面的单词首字母大写3 ,变量名的第一个单词小写,后面的单词首字母大写为了使 ...

  6. Linux下安装数据库sqlite3

    目录 一.简介 二.安装 三.测试 一.简介 SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.SQLite 是在世界上最广泛部署的 SQL 数据库引擎 ...

  7. Redis主从 部署和配置

    目录 一.主从简介 主从介绍 主从原理 二.主从部署 环境介绍 主从配置 临时主从 三.主从测试 一.主从简介 主从介绍 Redis都是主节点.每个从节点只能有一个主节点,而主节点可以同时具有多个从节 ...

  8. pipeline配置java项目

    pipeline { agent { label 'slave' } options { timestamps() disableConcurrentBuilds() buildDiscarder( ...

  9. Nginx结构原理全解析

    目录 一.Nginx简单介绍 二.Nginx优势 IO多路复用epoll模型 轻量级 Nginx的基本功能 .Nginx应用场景 Nginx代理 三.Nginx的结构解析 进程操作 事件模型 事件处理 ...

  10. Azure Virtual Netwok(二)配置 ExpressRoute 虚拟网络网关

    一,引言 我们可以使用 ExpressRoute 可通过连接服务提供商所提供的专用连接,将本地网络扩展到 Microsoft Cloud,实现了网络的混合连接.使用 ExpressRoute 可与 M ...