12.python之pymsql模組
- 2020 年 1 月 9 日
- 筆記
一、pymysql模組的簡介。
pymysql是python3.x版本用來操作mysql資料庫的一個模組,其實和python2.7中的MySQLdb模組的作用和操作語法都是一模一樣的。
可以通過pip來進行安裝:
pip3.5 install pymysql
pymysql這種資料庫介面的使用,大概分為4個步驟:
執行連接資料庫->執行query->提取數據->關閉連接
在使用pymysql這個模組時,你需要注意的。
- Connection 連接對象。 雖然在MySQLdb.Connect(host ,user , passw , db)函數中,我們經常使用的只是這幾個參數,但是其實裡面還有很多比如字符集、執行緒安全、ssl等也都是很重要的參數,使用時要身份注意。
- commit 提交。 對於mysql來說,如果使用支援事務的存儲引擎,那麼每次操作後,commit是必須的,否則不會真正寫入資料庫,對應rollback可以進行相應的回滾,但是commit後是無法再rollback的。commit() 可以在執行很多sql指令後再一次調用,這樣可以適當提升性能。
二、使用示例:
安裝好了之後,import導入。
import pymysql
#創建與資料庫的連接。
sql_conn=pymysql.connect(host='10.39.0.5',port=3306,user='root',passwd='123456',db='db_1')
#創建游標對象。
cursor = sql_conn.cursor()
hire_start = datetime.date(1999, 1, 1)
hire_end = datetime.date(2016, 12, 31)
#執行sql語句。
sql = 'SELECT first_name, last_name, hire_date FROM employees WHERE hire_date BETWEEN %s AND %s' %(hire_start,hire_end)
cursor.execute(sql)
#獲取查詢結果:
如果做的是select查詢操作的話,在游標對象中execute這個查詢語句後,會返回一個結果集。
返回的這個結果集中,是有指針概念的。
#one=cursor.fetchone() #只獲取結果集中的第一條記錄。(獲取當前指針所在位置向下的一條記錄。)(獲取一條結果後,指針會向下移動一條記錄)
#many=cursor.fetchmany(2)#以當前指針位置為基準,從結果集中向下獲取幾條記錄。
all=cursor.fetchall()#以當前指針位置為基準,一直獲取到結果集結束的位置。(也可以理解為獲取結果集中所有的結果。)
scroll 移動指針:
#cursor.scroll(-1,mode='relative') # 相對當前位置移動
#cursor.scroll(2,mode='absolute') # 相對絕對位置移動
mode為relative時是根據相對位置來移動指針的,整數代表向前移動幾行,負數代表向後移動幾行。
mode為absolute時是根據絕對位置來移動指針的,前面的數字為幾,就會移動到結果集的第幾行。
!!!更改獲取結果的數據類型:
#更改獲取數據結果的數據類型,默認是元組,可以改為字典等:conn.cursor(cursor=pymysql.cursors.DictCursor)
commit & close:
對於mysql來說,如果使用支援事務的存儲引擎,那麼每次操作後,commit是必須的,否則不會真正寫入資料庫,對應rollback可以進行相應的回滾,但是commit後是無法再rollback的。commit() 可以在執行很多sql指令後再一次調用,這樣可以適當提升性能。
sql_conn.commit() #提交
cursor.close() #關閉游標
sql_conn.close() #關閉連接
