python-網絡安全編程第四天(數據庫編程&網絡編程)

 

前言html

好幾天沒更由於寒假放假回家放鬆了幾天 嘿嘿 今天繼續開始啓動學習模式。python

python數據庫編程mysql

 

 

Python DB API訪問數據庫流程

 

 

Python DB API包含的內容

 

 

 

 

什麼是 PyMySQL?

PyMySQL 是在 Python3.x 版本中用於鏈接 MySQL 服務器的一個庫,Python2中則使用mysqldb。程序員

PyMySQL 遵循 Python 數據庫 API v2.0 規範,幷包含了 pure-Python MySQL 客戶端庫。sql

 

PyMySQL 安裝

$ pip3 install PyMySQL


connection對象

 

 

 connection 對象支持的方法:數據庫

 

 

 

cursor對象

cursor對象支持的方法:編程

 

 

 eg:api

 1 db_connection = pymysql.connect(
 2     host='127.0.0.1',
 3     user='xxxx',
 4     password='xxxx',
 5     database='python2test',
 6     charset='utf8'
 7 )
 8 cursor=db.cursor()
 9 cursor.execute("SELECT VERSION()")
10 data=cursor.fetchone()
11 print(data)
12 db.close()

利用python建立新的數據庫表服務器

 1 import pymysql
 2 
 3 db = pymysql.connect(
 4     host='127.0.0.1',
 5     port=3306,
 6     user='root',
 7     passwd='xiaohua',
 8     db='test'
 9     )
10 
11 cursor=db.cursor()
12 cursor.execute("SELECT VERSION()")
13 sql="""CREATE TABLE XIAOHUA (
14          FIRST_NAME  CHAR(20) NOT NULL,
15          LAST_NAME  CHAR(20),
16          AGE INT,  
17          SEX CHAR(1),
18          INCOME FLOAT )"""
19 cursor.execute(sql)
20 db.close()

參考學習:https://www.cnblogs.com/weizt/p/8432734.html網絡

https://www.runoob.com/python3/python3-mysql.html

 

 

 

 

python 網絡編程

socket概念

套接字是一種具備"通訊端點"概念的計算機網絡數據結構,網絡化的應用程序在任何通信以前都必須建立套接字
python支持:AF_UNIX,AF_NETLINK和AF_INEF,其中AF_INET是基於網絡的套接字

socket層

 

 

 

理解socket

網絡上的兩個程序經過一個雙向的通訊鏈接實現數據的交換,這個鏈接的一端稱爲一個socket。

創建網絡通訊鏈接至少要一對端口號(socket)。socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員作網絡開發所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通訊的能力。

傳輸層實現端到端的通訊,所以,每個傳輸層鏈接有兩個端點。那麼,傳輸層鏈接的端點是什麼呢?不是主機,不是主機的IP地址,不是應用進程,也不是傳輸層的協議端口。傳輸層鏈接的端點叫作套接字(socket)。

socket發展

Socket最初是加利福尼亞大學Berkeley分校爲Unix系統開發的網絡通訊接口。後來隨着TCP/IP網絡的發展,Socket成爲最爲通用的應用程序接口,也是在Internet上進行應用開發最爲通用的API

socket分類

爲了知足不一樣的通訊程序對通訊質量和性能的要求,通常的網絡系統提供了三種不一樣類型的套接字,以供用戶在設計網絡應用程序時根據不一樣的要求來選擇。這三種套接爲流式套接字(SOCK-STREAM)、數據報套接字(SOCK-DGRAM)和原始套接字(SOCK-RAW)。

 

 

 

 

 

套接字socket的使用

服務端代碼

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 # 文件名:server.py
 4  
 5 import socket               # 導入 socket 模塊
 6  
 7 s = socket.socket()         # 建立 socket 對象
 8 host = '192.168.233.132' 
 9 port = 12345                # 設置端口
10 s.bind((host, port))        # 綁定端口
11  
12 s.listen(5)                 # 等待客戶端鏈接
13 while True:
14     c,addr = s.accept()     # 創建客戶端鏈接
15     print '鏈接地址:', addr
16     c.send('歡迎訪問菜鳥教程!')
17     c.close()                # 關閉鏈接

客戶端

 1 #!/usr/bin/python
 2 
 3 import socket               # 導入 socket 模塊
 4 s = socket.socket()         # 建立 socket 對象
 5 host = '192.168.233.132' # 獲取本地主機名
 6 port = 12343                # 設置端口號
 7  
 8 s.connect((host, port))
 9 print s.recv(1024)
10 s.close()
11     

Socket 對象(內建)方法

函數 描述
服務器端套接字
s.bind() 綁定地址(host,port)到套接字, 在AF_INET下,以元組(host,port)的形式表示地址。
s.listen() 開始TCP監聽。backlog指定在拒絕鏈接以前,操做系統能夠掛起的最大鏈接數量。該值至少爲1,大部分應用程序設爲5就能夠了。
s.accept() 被動接受TCP客戶端鏈接,(阻塞式)等待鏈接的到來
客戶端套接字
s.connect() 主動初始化TCP服務器鏈接,。通常address的格式爲元組(hostname,port),若是鏈接出錯,返回socket.error錯誤。
s.connect_ex() connect()函數的擴展版本,出錯時返回出錯碼,而不是拋出異常
公共用途的套接字函數
s.recv() 接收TCP數據,數據以字符串形式返回,bufsize指定要接收的最大數據量。flag提供有關消息的其餘信息,一般能夠忽略。
s.send() 發送TCP數據,將string中的數據發送到鏈接的套接字。返回值是要發送的字節數量,該數量可能小於string的字節大小。
s.sendall() 完整發送TCP數據,完整發送TCP數據。將string中的數據發送到鏈接的套接字,但在返回以前會嘗試發送全部數據。成功返回None,失敗則拋出異常。
s.recvfrom() 接收UDP數據,與recv()相似,但返回值是(data,address)。其中data是包含接收數據的字符串,address是發送數據的套接字地址。
s.sendto() 發送UDP數據,將數據發送到套接字,address是形式爲(ipaddr,port)的元組,指定遠程地址。返回值是發送的字節數。
s.close() 關閉套接字
s.getpeername() 返回鏈接套接字的遠程地址。返回值一般是元組(ipaddr,port)。
s.getsockname() 返回套接字本身的地址。一般是一個元組(ipaddr,port)
s.setsockopt(level,optname,value) 設置給定套接字選項的值。
s.getsockopt(level,optname[.buflen]) 返回套接字選項的值。
s.settimeout(timeout) 設置套接字操做的超時期,timeout是一個浮點數,單位是秒。值爲None表示沒有超時期。通常,超時期應該在剛建立套接字時設置,由於它們可能用於鏈接的操做(如connect())
s.gettimeout() 返回當前超時期的值,單位是秒,若是沒有設置超時期,則返回None。
s.fileno() 返回套接字的文件描述符。
s.setblocking(flag) 若是flag爲0,則將套接字設爲非阻塞模式,不然將套接字設爲阻塞模式(默認值)。非阻塞模式下,若是調用recv()沒有發現任何數據,或send()調用沒法當即發送數據,那麼將引發socket.error異常。
s.makefile() 建立一個與該套接字相關連的文件

參考學習:https://www.cnblogs.com/dalaoban/p/9331113.html

https://www.runoob.com/python/python-socket.html

相關文章
相關標籤/搜索