python安全工具开发笔记(五)——python数据库编程

2023-09-22 11:17:07

一、Python DB API

在没有Python DB API之前:
在这里插入图片描述

有Python DB API之后:
在这里插入图片描述
Python DB API包含内容
在这里插入图片描述
Python DB API访问数据库流程
在这里插入图片描述

二、Python Mysql开发环境

在这里插入图片描述

三、Python 数据库编程实例

数据库连接对象connection
连接对象:建立Python客户端与数据库的网络连接
创建方法:MySQLdb.Connect(参数)

参数名类型说明
host字符串MySQL服务器地址
port数字MySQL服务器端口号
user字符串用户名
passwd字符串密码
db字符串数据库名
charset字符串连接编码

3.1 connection对象支持的方法

方法名说明
cursor()使用该连接创建并返回游标
commit()提交当前事物
rollback()回滚当前事物
close()关闭连接

3.2 cursor对象支持的方法

方法名说明
execute(op[,args])执行一个数据库查询命令(select、insert、delete)
fetchone()取得结果集里的下一行
fetchmanv(size)获得结果集里的下几行
fetchall()获得结果集里剩下的所有行
rowcount()最近一次execute返回数据的行数或影响行数
close()关闭

3.3 实例

示例一:

import pymysql#python3 用 pymysql,python2 用MySQLdb

conn = pymysql.connect(
                        host = '127.0.0.1',
                        port = 3306,
                        user = 'root',
                        passwd = 'root',
)
cus = conn.cursor()#连接数据库
sql = 'select version()'
cus.execute(sql)#执行sql语句
print(cus.fetchone())

cus.close()#关闭
conn.close()

在这里插入图片描述
示例二:
爬取i春秋的课程名并保存在数据库中

# coding=utf-8

import requests
import json
import pymysql#python3 用 pymysql,python2 用MySQLdb

payload_start = 'courseTag=&courseDiffcuty=1&IsExp=&producerId=&orderField=&orderDirection=&pageIndex='

def lesson(payload):
    url='https://www.ichunqiu.com/courses/ajaxCourses'
    #payload = 'courseTag=&courseDiffcuty=1&IsExp=&producerId=&orderField=&orderDirection=&pageIndex='
    #复制浏览器的UA,默认的UA属于爬虫UA被waf拦截
    headers = {
    'Cookie': 'ci_session=ea12fe98d0b99f9cfc7de37d51e34805ec566686; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; __jsluid_s=e09df2c83e087903c72b4d33caca7c93; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1662127088; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1662128935',

    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0',

    'Accept': 'application/json, text/javascript, */*; q=0.01',

    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',

    'Accept-Encoding': 'gzip, deflate',

    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

    'X-Requested-With': 'XMLHttpRequest',

    'Content-Length': '103',

    'Origin': 'https://www.ichunqiu.com',

    'Referer': 'https://www.ichunqiu.com/courses/nandu-chu',

    'Sec-Fetch-Dest': 'empty',

    'Sec-Fetch-Mode': 'cors',

    'Sec-Fetch-Site': 'same-origin',

    'Te': 'trailers',
    }
    r = requests.post(url,headers=headers,data=payload)
    data = json.loads(r.text)
    name_long = int(data['course']['perPageSize'])#每页有多少个课程名称
    #name_long = len(data['course']['result'])#方法1:json文件中course里面的有多少个result
    #print(name_long)
    #print(data['course']['result'][0]['courseName'])#读取json文件中course里面的result中的第一个courseName
    for i in range(name_long):
        #print(data['course']['result'][i]['courseName'],data['course']['result'][i]['producerName'])
        sql = "insert into lessons (lesson_name,lesson_own) values('%s','%s')"%(data['course']['result'][i]['courseName'],data['course']['result'][i]['producerName'])
        cus.execute(sql)#执行sql语句


conn = pymysql.connect(
                        host = '127.0.0.1',
                        port = 3306,
                        user = 'root',
                        passwd = 'root',
                        db = 'ichunqiu',
)
cus = conn.cursor()#连接数据库        
#使用for循环读取到8页课程名称
for i in range(1,9):#共12页的课程
    payload =payload_start+str(i)+'&tagType=&isOpen='
    lesson(payload)
    
cus.close()#关闭
conn.close()

在这里插入图片描述

更多推荐

良好的测试环境应该怎么搭建?对软件产品起到什么作用?

为了确保软件产品的高质量,搭建一个良好的测试环境是至关重要的。在本文中,我们将从多个角度出发,详细描述良好的测试环境的搭建方法、注意事项以及对软件产品的作用。一、软件测试环境的搭建1、从硬件设备的选择与配置开始。对于大型软件产品的测试,建议使用高性能的服务器以及分布式测试平台。在选择服务器时,要考虑产品的特性、测试需求

【结构型】享元模式(Flyweight)

目录享元模式(Flyweight)适用场景享元模式实例代码(Java)享元模式(Flyweight)运用共享技术有效地支持大量细粒度的对象。(业务模型的对象进行细分得到科学合理的更多对象)适用场景一个应用程序使用了大量的对象。完全由于使用大量的对象,造成很大的存储开销。对象的大多数状态都可变为外部状态。如果删除对象的外

【2023集创赛】加速科技杯作品:高光响应的二硫化铼光电探测器

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)加速科技杯西北赛区二等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品等你来领!团队介绍参赛单位:西北工业大学队伍名称:噜啦噜啦咧指导老师:李伟参赛队员:程琳,韩笑,尹天乐

苹果手机怎么录屏?1分钟轻松搞定

虽然一直使用苹果手机,但是对它的录屏功能还不是很会使用。苹果手机怎么录屏?录屏可以录制声音吗?麻烦大家教教我!苹果手机为用户提供了十分便捷的内置录屏功能,可以让您随时随地录制手机上的内容。但是很多小伙伴在第一次使用苹果手机时,找不到苹果手机的录屏工具在哪,所以不知道该如何进行录屏。那么,苹果手机怎么录屏呢?下面将给大家

python+nodejs+php+springboot+vue 学生选课程作业提交教学辅助管理系统

二、项目设计目标与原则1、关于课程作业管理系统的基本要求(1)功能要求:可以管理首页、个人中心、公告信息管理、班级管理、学生管理、教师管理、课程类型管理、课程信息管理、学生选课管理、作业布置管理、作业提交管理、作业评分管理、课程评价管理、课程资源管理等功能模块。(2)性能:在不同操作系统上均能无差错实现在不同类型的用户

[答疑]角色和状态的区别

DDD领域驱动设计批评文集“软件方法建模师”不再考查基础题《软件方法》各章合集jeri2023-9-1013:09设备关联角色,设备也有子类(车辆/设备),按书中的解释,设备是一个抽象类,角色类名像是带了状态名的类,如在使用的设备/在维护的设备,设备和这几个角色是关联关系,而且是0.1的关系,潘老师的观点是泛化关系还是

Linux下的网络编程——网络基础、socket编程(一)

前言:前面我们学习了Linux的系统编程,从今天我们就要开始Linux网络编程的学习了,Linux网络编程中的知识点可能没有前面的Linux系统多一点,但是基础的网络知识我们还是需要了解的,并且网络编程中的socket编程的知识也是相当重要的,那么现在我们就开始Linux网络编程的学习吧。目录一、协议1.7层模型和4层

使用Oracle实现完美的不重复随机数(oracle不重复随机数

使用Oracle实现完美的不重复随机数Oracle是一个功能强大的关系型数据库管理系统,它可以实现各种数据库操作和管理。在许多应用程序中,生成随机数是一个非常常见的任务。然而,许多时候,我们需要生成不重复的随机数,以确保数据的完整性和准确性。下面我们将介绍如何使用Oracle实现完美的不重复随机数。生成不重复随机数的方

Linux系统编程——进程间通信的学习

学习参考博文:进程间的五种通信方式介绍Linux信号介绍Linux系统编程学习相关博文Linux系统编程——文件编程的学习Linux系统编程——进程的学习Linux系统编程——线程的学习Linux系统编程——网络编程的学习Linux系统编程——进程间通信的学习一、概述1.无名管道和有名管道的区别2.当打开一个FIFO时

智能热水器语音控制丨打造智能家居新体验

随着科学技术的不断发展,智能电器越来越被大众所采纳,如智能扫地机,智能洗衣机,智能微波炉等等,越来越智能的电器为人们的生活带来了许多便利。以往的热水器一般都是只有按键/机械的控制方式,没有其他无线控制的控制方式。但现在新增了语音功能控制。用户通过语音控制智能热水器进行加热或保温等操作,无需用户手动控制;为人们带来了全新

电脑怎么录音,亲身测评,让你事半功倍!

“电脑怎么录音呀?最近学校的十大歌手比赛快开始了,需要自己录制一段音频线上参赛,通过的人才能参与线下的复赛,可是我的伴奏一直有杂音,就想问问大家,有没有比较好用的电脑录音方法呀?”在当今这个信息爆炸的时代,录音已经成为我们日常生活中不可或缺的一部分。无论是录制会议、讲座、课程还是简单的个人笔记,录音工具都能为我们带来极

热文推荐