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

一、Python DB API

在没有Python DB API之前:
python安全工具开发笔记(五)——python数据库编程_第1张图片

有Python DB API之后:
python安全工具开发笔记(五)——python数据库编程_第2张图片
Python DB API包含内容
python安全工具开发笔记(五)——python数据库编程_第3张图片
Python DB API访问数据库流程
python安全工具开发笔记(五)——python数据库编程_第4张图片

二、Python Mysql开发环境

python安全工具开发笔记(五)——python数据库编程_第5张图片

三、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数据库编程_第6张图片
示例二:
爬取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数据库编程_第7张图片

你可能感兴趣的:(python,数据库,python,安全)