一、python操作mysql数据库,需要先安装pymysql模块,由于电脑已经安装无法截图,大致过程如下

1、windows 进入到python的安装目录下的scripts目录里,鼠标按住shift,然后右键点击在此处打开命令行,然后输入 pip install mysql

2、使用过程中 import pymysql

      python操作redis数据库,需要先安装redis模块,由于电脑已经安装无法截图,大致过程如下

1、下载redis模块  Redis-x64-3.2.100.zip

2、解压后,在当前目录执行 python setup.py install

二、python 操作mysql数据库

1、流程大致分为如下几步:

# 1、连接上mysql  ip 端口号  密码 账号 数据库
# 2、建立游标
# 3、执行sql
# 4、获取结果
# 5、关闭连接、关闭游标

第一步:建立连接

# conn = pymysql.connect(host='211.149.218.16', port=3306, user='jxz', passwd='123456', db='jxz',charset='utf8') 
# 其中 port 要写int类型,password写字符串,charset要写utf8 不能写utf-8

第二步:建立游标


# cur = conn.cursor() # 游标


第三步:执行sql:


# cur.execute('show tables;') #执行sql语句

 第四步:获取结果:

# res = cur.fetchall() #获取sql语句执行的结果,是一个二维元组,每一条数据也是一个元组,打印结果:(('bt_stu',), ('hkk',), ('hkk2',), ('jxz_stu',), ('products_nyy',), ('stu',), ('user',), ('user_nyy',), ('user_passwd',), ('zmx',))
# print(res)
# cur.execute('select * from bt_stu limit 5;')
# res1 =cur.fetchall()
# print(res1) #打印结果((1, '贾梦缘', 1, '18612341231', '靠山屯', 1), (2, '处长', 0, '19212345678', '靠山屯', 1), (4, '处长', 0, '19312345678', '靠山屯', 1), (5, '处长', 0, '19312345671', '靠山屯', 1), (6, 'zdq', 0, '12312345678', '靠山屯', 1))
# print(res1[0][3]) #取第一条结果的电话号 打印结果:18612341231

# res2 = cur.fetchone() # 只获取一条结果,把结果放在元组里,打印结果:(1, '贾梦缘', 1, '18612341231', '靠山屯', 1)
# print(res2)

# print(cur.fetchone())  # 只获取一条结果,执行一次,取一条,也就是说第一次执行取的是(1, '贾梦缘', 1, '18612341231', '靠山屯', 1),这次执行取的结果是:(2, '处长', 0, '19212345678', '靠山屯', 1)
# print(cur.fetchone()) #这次执行取的结果是:第三条(4, '处长', 0, '19312345678', '靠山屯', 1)


# fetchone() 和 fetchall 同时用的时候,需要注意 指针的问题,读过一次了,再次用的时候,指针指向下一条

# print(cur.fetchone()) # 只读第一条数据
# print(cur.fetchall()) # 把第二条往后都打印出来
# print(cur.fetchone()) # 啥也没读出来,因为上一条已经把文件都读出来了,指针在最后了,打印结果是:none
#
# cur.scroll(0,mode='absolute') # 移动游标到最前面,绝对路径,0指的是往后移动
# print(cur.fetchone()) # 再次把第一条数据打印出来
#
# cur.scroll(0,mode='relative')# 移动游标到  相对于当前位置往后移动,如果上一条指针已经在最后了,则报 out of range
# cur.scroll(-1,mode='relative') #负数往前移动
# print(cur.fetchone())

# cur.execute("INSERT INTO `bt_stu` ( `real_name`, `sex`, `phone`, `class`, `type`) VALUES ( '赵四儿', '1', '19332341231', '靠山屯', '1');")
# conn.commit() # insert update delete 等语句需要commit一下,否则无法生效

#指定curson的类型 字典类型,字典类型方便取值

# cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
# cur.execute('select * from bt_stu limit 5;')
# res = cur.fetchall()
# print(res)# 打印结果list里面套字典:[{'class': '靠山屯', 'sex': 1, 'type': 1, 'phone': '18612341231', 'real_name': '贾梦缘', 'id': 502}, {'class': '哈哈哈', 'sex': 1, 'type': 1, 'phone': '18723561789', 'real_name': '王兰', 'id': 503}, …………………………

第五步:关闭游标,关闭连接:

# cur.close() # 关闭游标
# conn.close() # 关闭连接

三、python操作redis数据库
# redis 也是一种数据库
# 数据库分为:关系型数据库(mysql,oracle,sqlserver),和非关系型数据库 nosql类型,k-v格式的,目前流行的有  memcache,redis 存在内存里面,mongodb 数据还是存储在磁盘上
import redis

r = redis.Redis(host='211.149.218.16',
                password='123456',
                port=6379,
                db=2)# 连接数据库

r.set('happy','clap your hands')# set数据,写数据,key是唯一的

print(r.get('sherry')) # 打印结果是:b'hello world' 前面有个b
print(r.get('dkfakdfhadfha'))# 打印一个不存在的key的时候,返回的是None
print(r.get('happy').decode())# redis里面取出来的数据都是 bytes 类型的,所以要用decode()转成字符串

r.delete('工藤新一') # 删除

r.setex('angry','stomp your feet',10) # 指定key-value的失效时间,单位是秒

# set get delete setex 操作的类型都是str类型

# 哈希类型:key{key-value},哈希类型没有过期时间
r.hset('shop','iphone','5299')
r.hset('shop','ThinkPad','12999')
print(r.hget('shop','iphone')) #获取指定key的数据 打印结果:b'5299'
print(r.hgetall('shop')) # 获取key里的所有数据 字典格式 打印结果:{b'ThinkPad': b'12999', b'iphone': b'5299'}

#把字典里的byte类型变成字符串,因为没有decode()方法,可以通过循环的方式来变成正常的字典
redis_data=r.hgetall('shop')
all_data={}
for k,v in redis_data.items():
    k = k.decode()
    v = v.decode()
    all_data[k] = v
print(all_data) # 打印结果: {'iphone': '5299', 'ThinkPad': '12999'}

# key特别多,需要分类的时候,文件夹格式用‘:’来表示
r.set('peking:shop:iphone7','6299')
r.set('peking:shop:ThinkPad','16299') #结果是 db2 --> peking ——>shop 下面有key和value

# print(r.hget('peking:shop:ThinkPad') peking:shop:ThinkPad 是字符串类型
# print(r.get('peking:shop:'))# 打印结果是none,key没有写完全,取值的时候key必须写全了
# print(r.keys())# 打印所有的key 放list里面
# print(r.keys('txz*')) #支持模糊匹配
# print(r.type('happy')) #打印结果:b'string'
# print(r.type('shop')) #打印结果:b'hash'