Category - 班级课件

2022-12-25 12:57:39    13    0    0

学生管理系统

详细功能见pdf文件

学生管理系统.pdf

2022-12-24 07:55:04    20    0    0

Python中使用SQLite

Python 3.x版安装完成后有内附SQLite数据库,这一章将以此为实例讲解,在使用此SQLite前需要导入此SQLite

  1. import sqlite3

为了使用 sqlite3 模块,您首先必须创建一个表示数据库的连接对象,然后您可以有选择地创建光标对象,这将帮助您执行所有
的 SQL 语句。

连接数据库

操作数据库之前需要先连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。
使用connect方法连接数据, 格式为:

  1. sqlite3.connect(database [,timeout ,other optional arguments])

该 API 打开一个到 SQLite 数据库文件 database 的链接。您可以使用 “:memory:” 来在 RAM 中打开一个到 database 的数
据库连接,而不是在磁盘上打开。如果数据库成功打开,则返回一个连接对象。

当一个数据库被多个连接访问,且其中一个修改了数据库,此时 SQLite 数据库被锁定,直到事务提交。timeout 参数表示连接
等待锁定的持续时间,直到发生异常断开连接。timeout 参数默认是 5.0(5 秒)。

如果给定的数据库名称 filename 不存在,则该调用将创建一个数据库。如果您不想在当前目录中创建数据库,那么您可以指定
带有路径的文件名,这样您就能在任意地方创建数据库。

例如:

  1. import sqlite3
  2. conn = sqlite3.connect('test.db')
  3. print ("数据库打开成功")

运行上面的程序,在当前目录中创建我们的数据库 test.db, 可以根据需要改变路径
在这里,您也可以把数据库名称复制为特定的名称 :memory: ,这样就会在 RAM 中创建一个数据库。

获取游标

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句
逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

使用cursor函数获取游标, 格式如下

2022-12-11 13:45:58    18    0    0

SQLite 数据类型

SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。
您可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是
相关的,而不是与它的容器相关

每个存储在 SQLite 数据库中的值都具有以下存储类之一:

title

SQLite基本操作

创建表

SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类
型。

CREATE TABLE 语句的基本语法如下:

  1. CREATE TABLE database_name.table_name(
  2. column1 datatype PRIMARY KEY(one or more columns),
  3. column2 datatype,
  4. column3 datatype,
  5. .....
  6. columnN datatype,
  7. )

写入数据

SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行

INSERT INTO 语句有两种基本语法,如下所示:

  1. INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
  2. VALUES (value1, value2, value3,...valueN);

在这里,column1, column2,…columnN 是要插入数据的表中的列的名称

如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。
SQLite 的 INSERT INTO 语法如下:

  1. INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

查询数据

SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。

SQLite 的 SELECT 语句的基本语法如下:

  1. S
2022-12-04 12:09:22    32    0    0

什么是数据库

每个人家里都会有冰箱,冰箱是用来干什么的?冰箱是用来存放食物的地方

同样的,数据库是存放数据的地方。正是因为有了数据库后,我们可以直接查找数据。

例如支付宝查看自己的账户收益,就是从数据库读取数据后给你的。

title

有人可能会问了:我的数据就存放在自己电脑的excel表里就可以了,为什么还要搞个数据库呢?

这是因为数据库比excel有更多的优势。数据库可以存放大量的数据,允许很多人同时使用里面的数据。

举个例子,excel好比是一个移动硬盘,我们使用了这个移动硬盘其他人就用不了了。数据库好比是网盘,很多人可以同时访问里面里的数据。而且网盘比移动硬盘能放更多的数据。

数据库是如何存放数据的?

数据库有很多种类,这里我们重点学习使用最广泛的关系数据库。

关系数据库是由多个表组成的。就像Excel一样,Excel是一张一张的二维表。每个表都是由行和列组成的。

同样的,关系数据库里存放的也是一张一张的表,只不过各个表之间是有联系的。所以,简单来说:

关系数据库=多张表+各表之间的关系

title

对应的,学会关系数据库我们只要掌握两点就可以:

  • 多张表里面,每一张表的结构
  • 各表之间的关系

表的结构

表的结构是指要了解关系数据库中每张表长什么样。

每个表由一个名字标识。表包含带有列名的列,和记录数据的行。我们举个具体的例子就一目了然了。

下面图片里的表名是:学生表,记录了每个学生的信息。

title

表中每一列都有一个名字来标识出该列,这个表里有4列,列名分别是学号,姓名,出生日期,性别。从列名上你也可以知道这一列对应记录的是什么数据。

表的每一行里记录着数据。这里的一行表示该名学生的信息,比如第2行是学号0002学生的信息,他的姓名是猴子,出生日期是1990-12-21,性别是女。

各表之间的关系

关系数据库是由多张表组成的,图片里是存放在学校数据库里的4张表。

你能发现下面这4张表之间有什么关系吗?

title

其实,数据之间也是有关系的。关系数据库里各个表之间如何建立起关系呢?

我们来看图中“学生表”,“成绩表”这两个表之前的关系。

title

这两张表通过”学号”关联起来,为了更清楚的看到这两个表的关系,PPT里我用相同

2022-11-13 12:23:07    38    0    0

SMTP协议

Email(电子邮件)的历史比Web还要久远。直到现在,Email还是互联网上应用非常广泛的服务。

在我们开始编写邮件操作的相关代码之前,先了解一下电子邮件在互联网上是如何运作的。

title

title

相关概念:

假设自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@aliyun.com。用Outlook或Foxmail之类的软件写
好邮件,填上对方的Email地址,单击“发送”按钮,电子邮件就发送出去了。这些电子邮件软件被称为邮件用户代理(Mail
User Agent,MUA)。

Email从MUA发出去后,不是直接到达对方计算机,而是发到邮件传输代理(Mail Transfer Agent,MTA),就是Email服务
提供商,如网易、阿里云等。由于自己的电子邮件地址是163.com,因此Email首先被投递到网易提供的MTA,再由网易的
MTA发送到对方的服务商,也就是阿里的MTA。

Email到达阿里的MTA后,由于对方使用的是@aliyun.com的邮箱,因此阿里的MTA会把Email投递到邮件的最终目的地邮件投
递代理(Mail Delivery Agent,MDA)。Email到达MDA后,会存放在阿里云服务器的某个文件或特殊的数据库里,我们将这
个长期保存邮件的地方称为电子邮箱。

同普通邮件类似,Email不会直接到达对方的计算机,因为对方的计算机不一定开机,开机也不一定联网。对方要取到邮件,必
须通过MUA从MDA上获得。


SMTP的全称为Simple Mail Transfer Protocol,也就是简单邮件传输协议.

SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特
点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户
机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的
Mail请求,并与远端Mail服务器建立SMTP连接。

SM

2022-10-30 13:14:29    27    0    0

Selenium自动化web爬虫

操控鼠标

在现实的自动化测试中关于鼠标的操作不仅仅是click()单击操作,还有很多操控方法包含在ActionChains类中。

title

  1. from selenium import webdriver
  2. #1.引入 ActionChains 类
  3. from selenium.webdriver.common.action_chains import ActionChains

定位到要悬停的元素

  1. element= driver.find_element_by_link_text("设置")
  2. #3.对定位到的元素执行鼠标悬停操作
  3. ActionChains(driver).move_to_element(element).perform()

右键菜单

  1. action_chains = ActionChains(driver)
  2. body = driver.find_element_by_tag_name('body') # [name="body"]
  3. print(body)
  4. action_chains.context_click(body).perform()
  5. time.sleep(3)
  6. pyautogui.typewrite(['down', 'down', 'down'])
  7. time.sleep(3)
  8. pyautogui.typewrite(['return'])
  9. time.sleep(10)

键盘事件

Selenium中的Key模块为我们提供了模拟键盘按键的方法,那就是send_keys()方法。它不仅可以模拟键盘输入,也可以模拟键
盘的操作。

title

  1. # 输入框输入关键词
  2. driver.find_element_by_id("kw").send_keys("关键词")
  3. # 提交
  4. driver.find_element_by_id("btnSubmit").send_keys(Keys.ENTER)

多窗口切换

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了
switch_to.window()方法,可以实现在不同的窗口之间切换。

title

  1. #1.获
2022-10-23 08:52:50    35    0    0

Selenium 是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器。使
用Selenium可以模拟人工对web浏览器进行自动化操作。

安装Selenium

  1. pip install Selenium

要使用Selenium,还需要下载安装浏览器驱动。

驱动下载

配置webdriver(EDGE)

下载Microsoft Edge的webdriver,找到对应版本下载,解压后得到一个msedgedriver.exe

然后可以将msedgedriver.exe放到某个文件夹中,然后将路径配置到环境变量中

配置环境变量

手动创建一个存放浏览器驱动的目录,如: D:\webdriver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)
丢到该目录下,接着设置环境变量。

测试是否安装成功

title

元素定位方法

定位单个元素

selenium提供8种元素定位方式,包括DOM元素id, name和tag等等。它还支持xpath和css选择器。返回结果是元素对象。

title

接下来将以下面这个html页面为例演示如何使用以上各种定位方法。

title

通过id定位:

  1. dr.find_element_by_id("kw")

通过name定位:

  1. dr.find_element_by_name("wd")

通过class name定位

  1. dr.find_element_by_class_name("s_ipt")

通过tag name定

2022-08-28 06:23:34    32    0    0

csv简介

CSV (Comma Separated Values) ,即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式, 用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件,它的使用是非常广泛

Python csv库

Python中集成了专用于处理csv文件的库,名为:csv。

csv 库中有4个常用的对象:

  • csv.reader:以列表的形式返回读取的数据。
  • csv.writer:以列表的形式写入数据。
  • csv.DictReader:以字典的形式返回读取的数据。
  • csv.DictWriter:以字典的形式写入数据。

本节课学习: csv.reader和csv.writer

写入csv文件

假设我们现在要创建一个csv文件,将数据保存为如下形式

title

使用csv.writer写入数据

title

关于写入,需要注意:

  • 在打开文件时,需要添加newline = “”。否则,会在每2行有效内容之间添加一行空白。
  • 如果要保存的内容有中文,而且之后需要用Excel打开文件,那么需要选用utf-8-sig编码。如果使用utf-8编码,会导致使 用Excel查看文件时中文乱码。

读取csv文件

假设现在要读取的csv文件内容如下:

title

可以看到,该文件的第一行表明数据类型,我们暂且称之为header

从第2行开始,保存的是设备采集到的数据。

使用csv.reader读取数据

title
title

2022-08-07 08:23:42    21    0    0

正则表达式

什么是正则表达式?

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的 子串替换或者从某个串中取出符合某个条件的子串等。

例如:

  • runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
  • runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0 次、或1次、或多次)。
  • colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次或1次)。

正则表达式是由 普通字符 (例如字符 a 到 z)以及 特殊字符 (称为”元字符”)组成的文字 模式 。模式描述在搜索文本时要匹 配的一个或多个字符串。

正则表达式的用途

正则表达式,广泛用于与文字、字符串的格式化,放到Python里使用,再合适不过;尤其是在编写爬虫时,用正则表达式匹配 URL、匹配IP等,正则表达式都是一个简单、高效的选择。

正则表达式

普通字符:

普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一 些其他符号。

如:

  1. abc #匹配所有abc
  2. 123 #匹配所有123

元字符:

title

预定义字符集:

title

转义字符:

元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符”转义”,即,将反斜杠字符\ 放在它们前 面。

如:

  1. \[ #匹配左中括号
  2. \} #匹配右大括号

Python里的正则表达式

Python里的正则表达式,无需下载外部模块,只需要引入自带模块:re:

  1. import re

re.findall函数

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配 的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

语法格式为:

  1. findal
2022-07-10 10:13:28    19    0    0

HTTP协议

什么是 HTTP ?

超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。

HTTP 的工作方式是客户端与服务器之间的请求-应答协议。

web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。

举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求 的内容。

两种 HTTP 请求方法:GET 和 POST

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  • GET - 从指定的资源请求数据
  • POST - 向指定的资源提交要被处理的数据。

GET 方法

请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

  1. /test/demo_form.php?name1=value1&name2=value2

有关 GET 请求的其他一些注释:

  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET 请求有长度限制
  • GET 请求只应当用于取回数据

POST 方法

请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:

title

有关 POST 请求的其他一些注释:

  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求

比较 GET 与 POST

下面的表格比较了两种 HTTP 方法:GET 和 POST。

title

HTTP 与 HTTPS 的区别

HTTP 的全称是 Hyper Text Transfer Protocol,中文名叫作超文本传输协议,HTTP 协议是用于从网络传输超文本数据到本地 浏览器的传送协议,它能保证高效而准确地传送超文本文档

HTTPS 的全称是 Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即在

1/2