import datetime, pymysql
# print(datetime.datetime.today()) # 当前时间至秒
# print(datetime.datetime.now()) # 当前时间,与today一致
# print(datetime.datetime.today().strftime('%Y%m%d')) # 格式化时间
# print((datetime.datetime.today() + datetime.timedelta(3)).strftime('%Y%m%d')) # 取3天后日期
# print(datetime.datetime.today() + datetime.timedelta(-3)) # 取3天前日期
# print(datetime.date.today()) # 取当天日期至日
# 1.连接Myasql(IP,端口,用户,密码,数据库)
# 2.建立游标
# 3.执行sql
# 4.获取结果
# 5.关闭连接,关闭游标
sql = "INSERT INTO `bt_stu` ( `real_name`, `sex`, `phone`, `class`, `type`) VALUES ( 'zfb', '1', '18928430520', '999', '1');"
sql1 = 'select * from bt_stu;'
conn = pymysql.connect(host='211.149.218.16',
user='jxz', passwd='123456',
port=3306, db='jxz', charset='utf8') # port必须写int类型,charset必须写utf8
# cur = conn.cursor() # 建立游标,类似文件指针
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) # 指定游标类型为字典
cur.execute(sql1) # 执行sql语句
res = cur.fetchall() # 获取sql执行结果,fetchall以元组返回所有数据,每一条数据也是元组(二维元组)
# res = cur.fetchone() #只获取一条结果(一维元组),一次之获取一条记录,重复执行按顺序获取之后每一条记录
# cur.scroll(0,mode='absolute')#移动游标到最前面
# cur.scroll(-1,mode='relative')#移动游标,相对当前位置
conn.commit()
cur.close() # 关闭游标
conn.close() # 关闭连接
print(res)
import redis
# redis string操作k -v
r = redis.Redis(host='211.149.218.16', port=6379, password='123456', db=2) # 连接数据库
r.set('zfb', '666666') # set数据
print(r.get('zfb').decode()) # 获取数据,取出的数据都是bytes类型,都要用.decode方法转成字符串
r.delete('zfb')#删除
r.setex('zfb','hhhh',10)#set数据,并设置过期自动清除时间10S,
# redis hash类型操作,没有过期时间
r.hset('sessions', 'zfb', '123456') # set数据
print(r.hget('sessions', 'zfb').decode()) # 获取数据
redis_date = r.hgetall('sessions')#获取hash类型中所有数据
all_date = {}
for k,v in redis_date.items():#把hash类型里面所有的数据转成字典
k = k.decode()
v = v.decode()
all_date[k] = v
# 有层级的添加k - v
r.set('txz:homework:hhh', 'aaa')
print(r.keys()) # 获取所有的key数据
print(r.keys('txz*')) # 获取以txz开头的所有的key数据
print(r.type('sessions')) # 获取key数据类型
# redis数据迁移
src_redis = redis.Redis(host='211.149.218.16', port=6379, password='123456', db=2)
target_redis = redis.Redis(host='211.149.218.16', port=6379, password='123456', db=14)
for key in src_redis.keys():
if src_redis.type(key).decode() == 'string': # 判断Key的类型,redis数据获取的都是二进制,需要转换
v = src_redis.get(key)
target_redis.set(key, v)
else:
all_hash_date = src_redis.hgetall(key)
for k, v in all_hash_date.items(): # hash类型获取的为字典,需要循环取值
target_redis.hset(key, k, v) # Key为外面的key,k,v为hash类型的key和value