查询和修改
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 make5.测试
sudo make test6.将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的剩余生存时间