python自動化六--操做mysql,redis,發送郵件,EXCEL,MD5加密

1.python操做mysql

步驟:php

  1. 連上數據庫,輸入 ip,帳號密碼,端口號,數據庫名字
  2. 執行sql
  3. 獲取到結果
import pymysql #導入mysql模塊
coon=pymysql.connect(host='IP',user='用戶名',password='數據庫密碼',port=3306,db='數據庫名',charset='utf8',autocommit=True)#autocommit=True表示自動提交
cur = coon.cursor() #創建遊標
sql = 'insert into nhy (name,pwd) value ("xiaobai","1234567");'
cur.execute(sql)#執行sql語句,它只是幫你執行sql語句,不會給你返回數據
print(cur.fetchall()) #獲取查詢到的全部結果
print(cur.fetchone())  #只獲取一條
print(cur.fetchmany(2)) #指定獲取幾條
cur.close()#遊標關閉
coon.close()#鏈接關閉

#封裝一個鏈接mysql的函數
def my_db(ip,user,passwd,db,sql,port=3306,charset='utf8'):
    coon = pymysql.connect(host=ip,user=user,
                    password=passwd,db=db,
                    port=port,charset=charset,autocommit=True)
    cur = coon.cursor()
    sql=sql.strip()
    cur.execute(sql)
    sql_start = sql[:6].lower()#取sql的開頭,轉成小寫
    if sql_start.startswith('select') or sql_start.startswith('show'):
        data = cur.fetchall()
    else:
        data = 'ok'
    cur.close()
    coon.close()
    return data
2.python操做redis

SQL (Structured Query Language) 數據庫,指關係型數據庫 - 主要表明:SQL Server,Oracle,MySQL(開源),PostgreSQL(開源)。java

NoSQL(Not Only SQL)泛指非關係型數據庫 - 主要表明:MongoDB,Redis,CouchDBpython

SQL數據存在特定結構的表中;而NoSQL則更加靈活和可擴展,存儲方式能夠省是JSON文檔、哈希表或者其餘方式。mysql

import redis #導入redis模塊
r=redis.Redis(host='IP地址',port=6379,password='******',db=10)#鏈接數據庫,主機名,端口號,數據庫密碼,數據庫名

#操做string類型
r.set('nhy_info','age 18 sex nan sdfsdfsdfsd') #增長、修改數據
res = r.get('nhy_info_hhh')  #獲取數據
r.delete('nhy_info') #指定一個key刪除他,key不存在的話
print( res.decode() ) #編碼,將數據庫中的二進制編碼成字符串
#其餘的方法
print(r.keys('*info')) #獲取到全部的key
print(r.exists('dashu_name')) #判斷這個key是否存在
r.flushdb()#能夠清空當前數據庫裏面全部的key
r.expire('session_crm',600)#指定key的失效時間
print(r.ttl('session_crm'))#用來這個key的失效時間
print(r.type('session_crm'))#看key的類型

#操做hash類型
r.hset('session_crm','laowang___','ssdfsdfjksdklfjssdf') #增長,修改數據
r.hdel('session_crm','liuxinyu') #刪除指定的小key
r.delete('session_crm') #直接刪除大key
print(r.hget('session_crm','zhouyifan_'))#獲取指定小key裏面的數據

res = r.hgetall('session_crm')#獲取到hash類型裏面全部的數據
a = {}
for k,v in res.items():
    a[k.decode()] = v.decode()
print(a)
3.python發送郵件

在郵箱中開啓POP3/SMTP服務,獲取受權碼android

import yagmail #導入mail模塊
mail=yagmail.SMTP(user='郵箱帳號',password='郵箱受權碼',host='smtp.163.com')#鏈接郵箱,host指定郵箱類型
mail.send(to=['511402865@qq.com','892715094@qq.com'],cc['keweinielei@163.com','944527839@qq.com'],subject='郵件主題',contents='郵件內容',attachments=r'郵件附件的絕對路徑')#安全協議,smtp_ssl=True若是是qq郵箱須要加這個參數
4.python操做EXCEL
import xlwt  #導入excel模塊
book=xlwt.Workbook() #建立excel
sheet=book.add_sheet('stu_info')  #加一個sheet
sheet.write(0,0,'學生編號')   #第一行第一列
sheet.write(0,1,'學生姓名')   #第一行第二列
sheet.write(0,2,'成績')      #第一行第三列
book.save('stu1.xls')       #必定要用xls結尾
5.python MD5加密

md5加密算法是不可逆的,因此解密通常都是經過暴力窮舉方法,經過網站的接口實現解密ios

import hashlib #導入MD5模塊
s='123nhy456_++dfsdfsd'
s.encode()#將s編碼成二進制模式
m = hashlib.md5(s.encode()) #加密,必須得傳一個bytes類型的
print(m.hexdigest()) #獲取到加密後的結果

#封裝一個md5函數
def myMd5(s):
    s = str(s)
    m = hashlib.md5(s.encode()) #必須得傳一個bytes類型的
    return m.hexdigest()
6.經常使用模塊補充

import datetimenginx

print(datetime.date.today()) #當天的日期,只有日期
print(datetime.datetime.today())  #當天的時間,有日期有時間
print(datetime.date.today() + datetime.timedelta(days=10))
res = datetime.datetime.today()  + datetime.timedelta(hours=-10,minutes=-20)  #當天的時間,有日期有時間
print(res.time()) #只取到時間
print(res.date())#只取到日期
print(res.timestamp()) #時間戳
print(res.strftime('%Y-%m %H:%M:%S'))#取到格式化好的時間

map,filterredis

map() #循環調用函數
dir_names =['android','ios','tomcat','java','python','php','nginx']
res = list(map(makir,dir_names)) #循環幫你調用函數
#等效下面的代碼
def makir(dir_name):
    if not os.path.isdir(dir_name):
        os.mkdir(dir_name)
        return True
#列表推導式與函數生成器
num1  = [ str(i).zfill(2) for i in range(10)  ]  #列表推導式,空間換時間
num2 = ( str(i).zfill(2) for i in range(10) ) #生成器,時間換空間

#filter 過濾器
def my(num):
    if num%2==0:
        return True
        
res1=list( filter(my, range(10) ))#過濾,它把函數處理結果爲假的數據給過濾掉了,只保留函數返回真的數據
res2=list( map(my, range(10) )) #執行函數,保存函數執行結果

import os算法

print(os.path.abspath('..\\day3')) #取絕對路徑
print(os.getcwd()) #獲取當前工做目錄
# .表明當前目錄  ..上一級目錄 ...
print(os.listdir('e:\\spz\\day3'))
os.chdir('e:\\spz\\day3')#更改當前工做目錄
os.system('ipsdfds')#用來執行操做系統命令,沒法獲取結果
res = os.popen('ipconfig').read() #用來執行操做系統命令,能夠獲取結果
print('res的結果',res)
相關文章
相關標籤/搜索