1. 程式人生 > >百測學習之內建函式2和mysql的連線使用

百測學習之內建函式2和mysql的連線使用

一、遞迴

     遞迴自己呼叫自己 遞迴時最多迴圈999次就不可以再迴圈了,一定要給出迴圈機會,沒有迴圈效率高

count=0
def abc():
    global count
    count+=1
    print(count)
    print('abc')
    abc()  #遞迴呼叫
abc()

二、OS方法

1、os.walk() 可以把每一個目錄都迴圈找到

import os
for cur_path,cur_dirs,cur_files in os.walk(r'F:\python'):
    print(
'當前路徑',cur_path) print('當前目錄下有哪些資料夾',cur_dirs) print('當前目錄下有哪些檔案',cur_files) print('='*20) #字串相乘顯示多少次

還可以通過關鍵字查詢檔案,程式碼如下:

def find_movie(keyWord,path='F:\PPT模板'):
    for cur_path,cur_dirs,cur_files in os.walk(path):
        # if keyWord in str(cur_dirs):
        #     print(cur_path)
             
for file in cur_files: # if keyWord in file: if file.endswith(keyWord): print(cur_path) find_movie('pptx') #根據關鍵字搜尋對應的檔案目錄

2、getcwd()給出當前目錄

print(os.getcwd()) #給出當前目錄
res=eval('[1,2,3,4]') #執行一些簡單的python程式碼 加減法計算
print(exec(s2))   #可執行程式碼

 

三、內建函式 

定義變數時避免用關鍵字,如果用有的函式名會被重新定義之前功能不能使用

1. import math

res=max([1,3,4,5])  #求最大值

res1=sum(range(1,100)) #求1到100的和
print(chr(77))  #把數字轉換成ASCII的值
print(ord('A')) #把字母轉換成ASCII的值
print(dir(res))   #如果'.'不出來方法,可以看到這物件裡面有哪些方法

非空即真
print(bool([])) #轉布林型別的為true false
print(bool(())) #轉布林型別的為true false
print(bool({})) #轉布林型別的為true false
print(bool(None)) #轉布林型別的為true false
print(bool('')) #轉布林型別的為true false

2.排序
s='123456'
print(list(reversed(s))) # 倒排序
print(sorted({"k1":"v1","k2":"v2"},reverse=False) ) #reverse=True 根據k1,k2倒敘排

3. zip() 把兩個列表連在一起
name=['zyy','hhh','oo']
money=[50,20,30,80]
for n,m in zip(name,money): #把name與money連線在一起
    #print('%s==>%s'%(n,m))
     print(n,m)
print(list(zip(name,money)))

 

4.map函式 ,迴圈呼叫函式

def intToStr(num):
    return str(num).zfill(2)
res=map(intToStr,range(1,34))  #自動迴圈呼叫函式,儲存返回值
print(list(res))

5.lambda 函式 匿名函式,功能很簡單隻用一次 lambda是定義匿名函式的

a=lambda num:str(num).zfill(2)  #:前面是入參,後面是返回值
b=lambda num:num+1
print(a(1))  #lambda的呼叫
print(b(1))  #lambda的呼叫

res=map(lambda num:str(num).zfill(2),range(1,34))
print(list(res))

6. filter()  迴圈呼叫函式,幫篩選一些函式

def abc(num):
    if num%2==0:
        return True

lambda num:num%2==0
res1 = list(map(abc,range(1,11)))
res2 = list(filter(abc,range(1,11))) #r如果函式返回false,那麼就過濾掉這個值是從你傳入的值裡過濾
print(res1)
print(res2)

7.MD5加密

import hashlib
s='admin'
m = hashlib.md5(s.encode())
print(m.hexdigest())
# md5加密是不可逆的,加密之後不能進行解密
#解密之後:e10adc3949ba59abbe56e057f20f883e  123456
#解密之後:21232f297a57a5a743894a0e4a801fc3  admin
#彩虹表:加密後密碼對應的md5明文
m=hashlib.sha224(s.encode())
print(m)
m=hashlib.sha384(s.encode())
print(m)

四、第三方模組和函式

    1.第三方模組的三種安裝方法

1).安裝mysql:pip install pymysql 安裝mysql  (在cmd安裝直接安裝)
2).安裝.whl檔案: pip instal H:\軟體安裝包\軟體安裝包\PyMySQL-0.9.2-py2.py3-none-any.whl 絕對路徑
3).安裝.tar.gz檔案: 直接在資料夾中cmd可直接進入對應目錄,直接輸入命令安裝python setup.py install

2.Mysql使用
import pymysql
#118.24.3.40  jxz 123456 3306 jxz
conn=pymysql.connect(host='118.24.3.40',user='jxz',
                     password='123456',port=3306,db='jxz',charset='utf8',autocommit=True) #autocommit自動提交
cur=conn.cursor(pymysql.cursors.DictCursor) #建立遊標   #DictCursor字典返回的值key就是欄位名
sql='select * from app_myuser'
res=cur.execute(sql) #execute()只是執行sql,並不會返回結果
res1=cur.fetchall() #獲取的結果放到元組中
sql='insert into app_myuser (username,passwd,is_admin) values ("nhy123","456789",1);'
sql='insert into app_myuser (username,passwd,is_admin) values ("yaya123","123098",1);'  #插入sql用雙引號
sql1='select * from app_myuser where username="yaya123"'
res=cur.execute(sql1)
res1=cur.fetchall()   #查詢後面的資料不用加入參
print(res1)
conn.commit()  #插入資料之後,需要提交之後才能進入出具庫表

name='yaya'
sql2='select * from app_myuser where username="%s";'%name
sql3='select * from app_myuser limit 5'  #只取前5條資料
cur.execute(sql3)
print(cur.fetchall()) #獲取到所有的返回的資料
print(cur.fetchone()) #只取一條資料

cur.close()
conn.close()