Python爬虫--数据存储 (2)

查询和修改

Python与MySQL交互_查询与修改 import pymysql def select(): \'\'\'查询\'\'\' try: # 获取连接对象 conn = pymysql.Connect(host=\'localhost\', port=3306, db=\'python\', user=\'root\', passwd=\'1234\', charset=\'utf8\') # 创建可执行对象,可以执行SQL语句 cur = conn.cursor() # 执行SQL语句,并传递参数 cur.execute(\'select * from student where id=%s\', [2]) # 查询一个结果 result = cur.fetchone() print(result) # 关闭 conn.close() except Exception as ex: print(ex) def update(): \'\'\'修改\'\'\' try: # 创建连接 conn = pymysql.Connect(host=\'localhost\', port=3306, db=\'python\', user=\'root\', passwd=\'1234\', charset=\'utf8\') # 创建可以执行SQL语句的对象 cur = conn.cursor() # 执行SQL语句,并传递参数 count = cur.execute(\'update student set name=%s where id=%s\', [\'张三\', 2]) # 判断结果 if count > 0: print(\'成功\') else: print(\'失败\') # 提交 conn.commit() # 关闭 conn.close() except Exception as ex: print(ex) if __name__ == \'__main__\': select() update()

说明:

如果是增删改,cur执行SQL语句返回值是受影响的行数。

如果是查询,则需要继续调用cur的查询方法,fetchone是查询符合条件的第一个对象,fetchall是查询符合条件的结果集

非关系型数据库

NoSQL(Not Only SQL)

特点

不支持SQL语法

存储数据KV形式

NoSQL没有通用语言,每种NoSQL数据库都有各自的API和语法,以及擅长的业务场景

对比

适用场景:关系型数据库适用于关系特别复杂的数据查询场景,非关系型数据库反之

事务特性的支持:关系型数据库对事务支持完善,非关系型数据基本不支持事务

两者取长补短。对于爬虫的数据,可能有缺失值,可能结构不同。

用关系型数据库,建数据库,数据库表,关系约束,数据筛选,或拆分,这样使用效率较低;而非关系型数据库,直接以键值对存储,简单且效率高。

Redis

概述

用key-value存储,NoSQL的一种

值可以是字符串(String),哈希(Hash),列表(List),集合(Sets),有序集合(Sorted Sets)等类型

优势

性能极高:读的速度110000次/s,写的速度是81000次/s

支持的数据类型多:支持Strings,Lists,Hashes,Sets及Ordered Sets等数据类型的操作

原子:Redis的所有操作都是原子性的,同时还支持对几个操作合并后的原子性执行

丰富的特性:Redis还支持publish/subscribe,通知,key过期等特性

安装

1.打开Redis官方网站,下载稳定版本(stable),放到家目录下 cd /home

2.解压安装包

tar -zxvf ./redis.tar.gz # 解压

3.移动

sudo mv ./redis/ /usr/local/

4.编译

cd /usr/local/redis/ sudo make

5.测试

sudo make test

6.将Redis的命令安装到/usr/local/bin/目录

sudo make install

启动

redis-server # 启动服务器 redis-cli # 启动客户端

测试连接

ping # 打印PONG表示连接成功

远程访问配置

修改redis.conf配置文件

vim /usr/local/redis/redis.conf

注释bind

protected-mode改为no

bind 127.0.0.1 protected-mode no

使用配置文件方式启动

-- 复制配置文件到etc下的redis文件夹中 sudo mkdir /etc/redis/ sudo cp /usr/local/redis/redis.conf /etc/redis -- 指定配置文件启动 sudo redis-server /etc/redis/redis.conf

停止Redis服务

ps ajx|grep redis # 找到Redis的进程id sudo kill -9 redis的进程id 命令操作

Redis地理位置命令

geoadd # 将指定的地理空间位置(纬度,经度,名称添加到指定的key中) geodist # 返回两个给定位置之间的距离 geohash # 返回一个或多个位置元素的Geohash表示 geopos # 从key中返回所有给定位置元素的位置 georadius # 以给定的经纬度为中心,找出某一半径内的元素 georadiusbymember # 找出位于指定范围内的元素中心点由给定的位置元素决定

Redis键(key)命令

del # 该命令用于在key存在时删除key dump # 序列化给定key,并返回被化的值 move # 将当前数据库中的key移动到给定数据库db当中 rename # 修改key的名称 renamenx # 仅当newkey不存在时,将key改名为newkey exists # 检查给定key是否存在 type # 返回key所储存的值的类型 keys # 查找所有符合给定模式的key randomkey # 从当前数据库中随机返回一个key expire # seconds为给定key设置过期时间 expireat # 作用与expire类似,设置key过期时间,接受的时间参数是unix时间戳 persist # 移除key的过期时间,key将持久保持 pttl # 以毫秒为单位,返回key的剩余过期时间 ttl # 以秒为单位,返回给定key的剩余生存时间

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpjgd.html