python数据持久化(mysql+CSV+mongodb)

发布时间 2023-11-18 19:30:42作者: 枫飘过的天1

1.创建数据库
create database mydb charset utf8;
use mydb;
create table mydb(name varchar(100),star varchar(200),time varchar(100)) charset=utf8;

2.使用pymysql模块在mytab表中插入一条表记录
import pymysql

#(1)创建数据库连接对象
db = pymysql.connect('localhost', 'root', '123456', 'mydb', charset='utf8')
#(2)创建游标对象
cur = db.cursor()
#(3)执行SQL命令
ins = 'insert into mytab values(%s,%s,%s)'
li = ['大话西游', '周星驰', '1994-01-01']
cur.execute(ins, li)
#(4)提交到数据库执行
db.commit()
#(5)关闭游标
cur.close()
#(6)断开数据库连接
db.close()

###数据库中select * from mytab;可以查看到插入的数据。应用:结合4可以将猫眼抓取数据存储到mysql

3.csv模块(execl可以直接打开)
  问题1:windows中csv文件会多出空行,使用newline参数解决
  问题2:gbk编码识别不了某些特殊字符,手动指定字符编码

import csv
with open('test.csv', 'w', newline='', encoding='utf-8') as f:
# 初始化csv文件的写入对象
writer = csv.writer(f)
writer.writerow(['大话西游', '周星驰', '1994-01-01'])

#CSV在打开一次,在init时即可,

class MaoyanSpider:
def __init__(self):
"""定义常用变量"""
# 打开文件和创建CSV文件写入对象只需要执行一次
self.f = open('maoyan.csv', 'w')
self.writer = csv.writer(self.f)
def get_html(self, url):
"""获取响应内容"""
def parse_html(self, html):
""""解析的功能函数,解析提取数据"""
def save_html(self, r_list):
"""具体数据处理的函数"""
for r in r_list:
li = [
r[0].strip(),
r[1].strip(),
r[2].strip()
]
self.write.writerow(li)
print(li)
def run(self):
"""程序入口函数"""
#所有执行完,关闭csv文件
if __name__ == '__main__':
spider = MaoyanSpider()
spider.run()

3.mongodb非关系型数据库:键值对方式存储(redis也是非关系型,键值对)
  (1)python基础 :基于磁盘存储,redis基于内存存储,值为json文档

  (2)Python与mongodb交互
安装pymongo模块:sudo pip3 install pymongo
pymongo模块使用流程:
创建连接对象:conn = pymongo.MongoClient('localhost', 27017)
创建哭对象:db = conn['库名']
创建集合对象: myset = db['集合名']
在集合中插入文档: myset.inset_one({})
注意:mongodb无需提前建库和建集合,自动创建对应集合和文档
mongodb无需手动提交到数据库执行

   (3)python与mongodb交互
库名:testdb
集合名testtest
文档:{'name':'tome','name':'john'}
例子:
import pmongo
# a.创建数据库连接对象
conn = pymongo.MongoClient('localhost', 27017)
# b.创建库对象
db = conn['testdb']
# c.创建集合对象
myset = db['testtest']
# d.插入文档
myset.inset_one({'name':'Tome','tools':'kills'})