0
点赞
收藏
分享

微信扫一扫

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


一、Python DB API

在没有Python DB API之前:

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

有Python DB API之后:

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


Python DB API包含内容

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


Python DB API访问数据库流程

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

二、Python Mysql开发环境

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

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

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


示例二:

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

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


举报

相关推荐

0 条评论