1. 程式人生 > 其它 >第三方模組(2)

第三方模組(2)

redis模組

# redis是非關係型資料庫,nosql型資料庫
# 資料全部存在記憶體裡,讀取比較快,每秒鐘最大支援10W的讀寫
# Redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)

import redis

r = redis.Redis(host="118.24.3.40", password="HK139bc&*", port=6379, db=4,decode_responses=True)

#處理字串型別 string k-v {"name":111}
# r.set('zhengpei','123456') #存值,修改值
# r.set('zhengpei','123456',60) #60表示失效時間為60秒;如果不傳則永久生效,redis重啟才失效,ttl為-1代表永久生效
# print(r.get('zhengpei'))#取值
# r.delete('zhengpei')#刪值

# 通用基本操作
# print(r.keys()) #獲取所有的key值
# print(r.keys('*new*')) #獲取某些key值
# print(r.exists('zhengpei')) #key是否存在,0表示不存在,1表示存在
# print(r.type('zhengpei')) #輸出key的型別
# print(r.expire('zhengpei', 60)) #設定key的失效時間
# print(r.ttl('zhengpei')) #獲取key的失效時間
# r.flushdb()#清空當前資料庫
# r.flushall() #清空所有資料庫

#處理hash型別 hash 大字典 {"student":{"xiaohei":"{'id':1,'age':18}","xiaobai":"{'id':2,'age':19}"}}
# r.hset('zhengpei1','xiaoqi','{"age":2.5}') #存值
# r.hset('zhengpei1','dabai','2.5') #存值
# d={'xiaobai':23}
# r.hmset('zhengpei1',d) #最新版本的redis模組對hmset支援不好
# print(r.hget('zhengpei1', 'xiaoqi')) #獲取指定的小key
# print(r.hget('zhengpei1', 'dabai')) #獲取指定的小key
# print(r.hgetall('zhengpei1')) #獲取指定大key裡的所有的值
# r.hdel('zhengpei1','xiaoqi') #刪除指定的小key
# r.delete('zhengpei1') #刪除指定的大key
# print(r.hexists('zhengpei1', 'xiaoqi'))#判斷在小key是否存在

#list型別
r.lpush("black_list",*l) #左存值
# r.lpush("black_list","2")
# r.rpush("black_list","3")#右存值
# print(r.lrange("black_list",0,1)) #取值
# r.lpop("black_list") #從左邊刪
# r.rpop("black_list")#從右邊刪
# r.lset("black_list",0,"hhhh")#指定位置修改
# print(r.llen("black_list")) #取這個list的長度
# print(r.ltrim("black_list",0,0)) #刪除列表裡面的資料,除了你指定的範圍
# print(r.lrem("black_list",2,"hhh")) #刪除指定的元素

# # 如果連結redis的時候沒有加decode_responses=True,將hgetall返回結果字典中的d全部去掉生成一個新的字典
# ret=r.hgetall('zhengpei1')
# new_ret = {}
# for k,v in ret.items():
# k = k.decode()
# v = v.decode()
# new_ret[k] = v
# print(new_ret)


#處理list型別
# l = ['xiaoqi', 'dabai', 'xiaobai']
# r.lpush("zppblack_list",*l) #左存值,l存值完成後順序是:xiaobai,dabai,xiaoqi
# r.lpush("zppblack_list","2") #坐存值,存在最前面
# r.rpush("zppblack_list","3")#右存值,存在最後面
# print(r.lrange("zppblack_list",0,1)) #取值
# r.lpop("zppblack_list") #從左邊刪
# r.rpop("zppblack_list")#從右邊刪
# r.lset("zppblack_list",0,"hhhh")#指定位置修改
# print(r.llen("zppblack_list")) #獲取這個list的長度
# print(r.ltrim("zppblack_list",0,0)) #刪除列表裡面的資料,除了你指定的範圍,返回true表示刪除成功
# print(r.lrem("zppblack_list",2,"xiaobai")) #刪除指定的元素,刪除2次,1表示刪除成功,如果將2改為0,則表示刪除所有的



requests模組
import requests
#1、get請求
#2、post請求
#3、url裡面傳參
#4、傳參是json格式
#5、傳參有cookie
#6、傳參有header
#7、傳參有檔案
#8、k-v

#get請求:http://api.nnzhp.cn/api/user/stu_info?stu_name=xiaohei
# url = "http://api.nnzhp.cn/api/user/stu_info"
# data={'stu_name':'鄭佩'}
# req = requests.get(url,data)
# # 獲取請求的返回結果
# print(req.json()) #輸出返回的json格式,返回要是json格式,否則會報錯哦
# print(req.text) #輸出返回的字串格式
# print(req.content) #輸出返回的bytes格式
# print(req.status_code) #獲取返回的狀態碼
# print(req.cookies) #獲取返回的cookies
# print(req.headers) #獲取返回的headers


#post請求
# url = "http://api.nnzhp.cn/api/user/login"
# data={'username':'niuhanyang','passwd':'aA123456'}
# # data2 = {"version":1} ????????????????
# # req = requests.post(url,params=data2,data=data) ???????????????
# req = requests.post(url,data)
# print(req.url)


# #post請求,入參是json格式
# url = "http://api.nnzhp.cn/api/user/add_stu"
# data = {
# "name": "鄭佩",
# "grade": "88",
# "phone": "13296918746"
# }
# req = requests.post(url,json=data)
# print(req.json())


#傳參裡有cookies
# url='https://qun.qq.com/cgi-bin/qun_mgr/search_group_members'
# data={
# 'gc': 173415485,
# 'st': 0,
# 'end': 20,
# 'sort': 0,
# 'bkn': 893388711
# }
# cookie={'pgv_pvid': '9947068172', 'pac_uid': '0_5396a0a05b3e0', 'tvfe_boss_uuid': '91bd27b0216224a0', 'RK': 'uWIUk8JbcU', 'ptcz': '872fc4a759236bdeadfb93b515603f2aeaad89d36136e1ea3c6ab5540a717822', '_qpsvr_localtk': '0.6314976695115915', 'uin': 'o1490768397', 'skey': '@CLy2QSEI6', 'p_uin': 'o1490768397', 'pt4_token': '3wx*-gPem0jYFQW*OxjfSSH9xePG-Yj7aaQ96Cwlyf8_', 'p_skey': 'OvDiCPYMfHhjaVPPfgG3loYQ7h-ZHRJXDSRm9SbRgM8_', 'traceid': '70c67d51ad'}
# req=requests.post(url,data,cookies=cookie)
# print(req.json()['mems'])


# #傳參裡有headers
# url='https://qun.qq.com/cgi-bin/qun_mgr/search_group_members'
# data={
# 'gc': 173415485,
# 'st': 0,
# 'end': 20,
# 'sort': 0,
# 'bkn': 893388711
# }
# #用上面相同的介面,將cookis放到headers裡
# header={'cookie':'pgv_pvid=9947068172; pac_uid=0_5396a0a05b3e0; tvfe_boss_uuid=91bd27b0216224a0; RK=uWIUk8JbcU; ptcz=872fc4a759236bdeadfb93b515603f2aeaad89d36136e1ea3c6ab5540a717822; _qpsvr_localtk=0.6314976695115915; uin=o1490768397; skey=@CLy2QSEI6; p_uin=o1490768397; pt4_token=3wx*-gPem0jYFQW*OxjfSSH9xePG-Yj7aaQ96Cwlyf8_; p_skey=OvDiCPYMfHhjaVPPfgG3loYQ7h-ZHRJXDSRm9SbRgM8_; traceid=70c67d51ad'}
# req=requests.post(url,data,headers=header)
# print(req.json()['mems'])


# #傳參裡有檔案
# url = "http://api.nnzhp.cn/api/file/file_upload"
# data = {"file":open("a.xlsx",'rb')} #檔案開啟方式需要時rb,byte格式
# req = requests.post(url,files=data)
# print(req.json()) #返回字典,如果介面返回的不是json,那會報錯


#下載檔案
url = "http://aliimg.changba.com/cache/photo/941190975_200_200.jpg"
req = requests.get(url,verify=False) #如果請求https路徑抱錯,加上verify=False
with open("b.jpg",'wb') as fw: #寫入檔案,檔案開啟方式需要是wb,byte格式
fw.write(req.content) #寫入需要是byte內容,用req.content
yamail模組
import yamail
def send_mail(to_list,cc_list=None,subjects=None,content=None,attachments_list=None):
username = "[email protected]"
password = "xzhmmxdgxbyyhdci" #在QQ郵箱中生成的授權碼
host = "smtp.qq.com" #qq
# host = "smtp.163.com" #163
# host = "smtp.126.com" #qq

smtp = yamail.SMTP(host=host,user=username,password=password)
# smtp.send(to="[email protected]") #單個傳送
smtp.send(
to=to_list, # 收件人列表
cc=cc_list, #抄送人列表
subject=subjects, #檔案主題
contents=content, #檔案內容
attachments=attachments_list #附件
)
if __name__ == '__main__':
to_list=["[email protected]"]
send_mail(to_list)