python数据存储的两种方法

数据存储的两种方法,connect函数用法详解

          • 1、将数据存储为JSON文件
          • 2、将数据存储到MySQL数据库
            • 2.1、连接方法
            • 2.2、数据库操作函数
            • 2.3、数据库操作代码

1、将数据存储为JSON文件

使用Xpath获取标题菜单的文本,再使用dump方法将获取到的文本写入JSON文件。
*url字符代表一个网址此处省略网址

 import requests
 import chardet
 from lxml import etree
 ua = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) Chrome/65.0.3325.181'}
 rqg=requests.get(url,headers=ua,timeout=3.0)
 rqg.encoding = chardet.detect(rqg.content)['encoding'] #requests请求过程
 #初始化HTML
 html = rqg.content.decode('utf-8')
 html = etree.HTML(html,parser=etree.HTMLParser(encoding='utf-8')) 
 
 content = html.xpath('//ul[starts-with(@id,"me")]/li//a/text()')
 print('标题菜单的文本:',content)
 #使用dump方法写入文件
 with open('output.json','w') as fp: 
 	json.dump(content,fp)
2、将数据存储到MySQL数据库
2.1、连接方法

PyMySQL库使用connect函数连接数据库,connect函数的基本语法如下:

pymysql.connect(host,port,user,passwd,db,chardet,connect_timeout,use_unicode)

connect函数常用的参数及其说明

参数名称 说明
host(str) MySQL数据库地址,本机地址通常为127.0.0.1
port(int) MySQL数据库端口号,通常为3306
user(str) 数据库用户名,管理员用户为root
passwd(str) 数据库密码
db(str) 数据库名称
charset(str) 连接数据库的编码,通常为utf8
connect_timeout(int) 连接超时时间,以秒为单位
use_unicode(str) 结果以unicode字符串的格式返回
import pymysql
#使用参数名创建连接
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='0000',db='test',chardet='utf8',connect_timeout=10)
#不使用参数名创建连接
conn = pymysql.connect('127.0.0.1',3306,'root','0000','test','utf8',10)
2.2、数据库操作函数

PyMYSQL库中可以使用函数返回的连接对象connect进行操作,常用的函数如表所示

函数 说明
commit 提交事务
rollback 事务回滚,在没有提交事务的前提下
cursor 创建一个游标对象

在Python操作数据库的过程中,通常使用游标对象进行数据库操作。
游标对象常用到的方法

方法 说明 语法格式
close 关闭游标 cursor.close()
execute 执行SQL语句 cursor.execute(sql)
excutemany 执行多条SQL语句 cursor.excutemany(sql)
fetchone 获取执行结果的第一条记录 cursor.fetchone()
fetchmany 获取执行结果的n条记录 cursor.fetchmany(n)
fetchall 获取执行结果的全部记录 cursor.fetchall()
scroll 用于游标滚动 cursor.scroll()

游标对象的创建是基于连接对象的,创建游标对象之后即可通过语句对数据库进行增删改查等操作。

2.3、数据库操作代码
import pymysql
#使用参数名创建连接
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='0000',db='test',chardet='utf8',connect_timeout=10)

cursor = conn.cursor() #创建游标
sql = 'create table if not exists class (id int(10) primary key auto_increment,name varchar(20) not null,text varchar(20) not null)' #创建class表,有id为主键,并设置自动增加,name,text 为非空
cursor.execute(sql) #执行创建的SQL语句   !代码只能执行一次,不然将报错
cursor.execute('show tables') #查看创建的表

#准备数据
 import requests
 import chardet
 from bs4 import chardet
 ua = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) Chrome/65.0.3325.181'}
 rqg=requests.get(url,headers=ua,timeout=3.0)
 rqg.encoding = chardet.detect(rqg.content)['encoding'] 
 html = rqg.content.decode('utf-8')
 
 soup = BeautifulSoup(html,'lxml')
 target = soup.title.string
 print('标题的内容:',target)
 title = 'abcd' #插入数据
 sql1 = 'insert into class (name,text)values(%s,%s)'
 cursor.execute(sql1,(title,target)) #执行插入语句
 conn.commit() #提交事务
 data = cursor.execute('select * from class') #查询数据
 data1 = cursor.fetchall() #使用fetchall方法获取结果
 print('查询获取的结果:',data1)
 
 conn.close() #关闭连接

你可能感兴趣的:(python数据存储的两种方法)