python基礎-requests模塊、異常處理、Django部署、內置函數、網絡編程


 網絡編程

 

urllib的request模塊可以非常方便地抓取URL內容,也就是發送一個GET請求到指定的頁面,然后返回HTTP的響應。

 

校驗返回值,進行接口測試:

編碼:把一個Python對象編碼轉換成Json字符串   json.dumps()

解碼:把Json格式字符串解碼轉換成Python對象   json.loads()

 

 

Post請求:

urllib庫里面有個urlencode函數,可以把key-value這樣的鍵值對轉換成我們想要的格式。

 

 

requests模塊

urllib模塊是python自帶的網頁模塊,但是並不好用,好用的是requests模塊

requests.get(url,params=data) get請求,返回的可以是字典也可以是json串

requests.post(url,data)post請求,返回的可以是字典也可以是json串

requests.get/post(..cookies=)請求加cookie,注意cookie是字典,不是字符串

requests.get/post(..headers=)請求加header

 

requests.post(..files=)上傳文件,注意excel和圖片需要用‘rb’

request.get(url) .content下載文件,二進制文件要用‘wb’

 

 

異常處理

程序一旦報錯,就會中止運行,不夠人性化,希望有問題的部分可以給出提示,沒有問題的部分可以正常運行,可以用if做判斷,但會導致代碼不易讀

try:檢查哪些代碼會產生異常,后面跟except來捕獲異常,如果沒有捕捉到異常,程序還是會報錯

except 某類異常 as e:如果try中發生該類異常,則執行。一個try可以寫多個except,用來捕捉多類異常。如果想捕捉全部異常,用except Exception as e

 

finally:不管try中是否發生異常,都會執行

 

 

 

Django部署

安裝django模塊:

打開cmd執行以下命令

pip install django==1.9

django-admin startproject my_django

打開pycharm,新建一個項目

把源代碼覆蓋到這個項目

安裝mysql  MySQL Server 5.7:

打開或新建mysql路徑\my.ini,輸入以下內容保存

[mysqld]

basedir=mysql路徑

datadir=mysql路徑\data

port=3308

mysql路徑下打開cmd執行以下命令

mysqld --install MYSQL_NEW --defaults-file= mysql路徑\my.ini

net start MYSQL_NEW

連接數據庫,新建一個main數據庫

並執行main.sql初始化數據庫表

安裝redis  Redis-x64-3.2.100:

打開redis.windows.conf查找requirepass foobared,在下一行加requirepass 你的密碼

Redis路徑下打開cmd執行以下命令

redis-server redis.windows.conf

啟動服務:

項目路徑下打開cmd,執行以下命令

python manage.py runserver 0.0.0.0:8000

打開瀏覽器,輸入地址

FAQ

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([WinError 10061] 由於目標計算機積極拒絕,無法連接

說明mysql服務沒有啟起來

django.db.utils.InternalError: (1366, "Incorrect string value: '\\xE7\\x94\\xA8\\xE6\\x88\\xB7...' for column 'name' at row 1")

sql不能在pycharm里執行,要放到navicat里執行

Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

說明sql模式是only_full_group_by,但是寫的sql中group by前面的字段不全

解決辦法兩種:第一種sql不變,在my.ini加上

[mysqld]

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

第二種把sql里group by前面的字段補全,建議用第一種

 

 

內置函數

zip()函數:用於將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表

還可以搭配for循環使用:

map()函數:Python 內置的高階函數,它接收一個函數 f 和一個 list,並通過把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 並返回。

兩個參數一個是函數名,另一個是列表或元組。

注意:map()函數不改變原有的 list,而是返回一個新的 list。

 

filter()函數:用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

和map()類似,filter()也接收一個函數和一個序列。和map()不同的時,filter()把傳入的函數依次作用於每個元素,然后根據返回值是True還是False決定保留還是丟棄該元素。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM