PyMySQL 是在 Python3.x 版本中用於鏈接 MySQL 服務器的一個庫,Python2中則使用mysqldb。mysql
pip3 install pymysql
import pymysql # 構造上下文 config = { 'host': '127.0.0.1', 'port': 3306, 'user': 'root', 'password': 'mysql', 'db': 'demo', 'charset': 'utf8', } # 建立鏈接 conn = pymysql.connect(**config) # 建立遊標 cursor = conn.cursor() # ————————————————————操做例子1———————————————————————— # 執行SQL,並返回收影響行數 effect_row = cursor.execute("insert into class (class_name) values ('五班')") print("受影響行數爲:%s" % effect_row) # ————————————————————操做例子2———————————————————————— cursor.execute("select * from class") # 獲取第一行數據 row_1 = cursor.fetchone() print(row_1) # (1, '一班') # 獲取前n行數據 row_2 = cursor.fetchmany(3) print(row_2) # ((2, '二班'), (3, '三班'), (4, '四班')),能夠看到並非從第一個位置開始查找,而是從上次查找位置開始的 # 獲取全部數據 cursor.scroll(0, mode="absolute") # 這個語句是用來給查詢進行絕對定位的,因爲其實位置是0,全部設置爲0,這樣下次查找又是從第一個開始查找。 row_3 = cursor.fetchall() print(row_3) # ((1, '一班'), (2, '二班'), (3, '三班'), (4, '四班'), (5, '五班'), (7, '五班')) # ————————————————————操做例子3———————————————————————— cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 關於默認獲取的數據是元祖類型,若是想要字典類型的數據,這樣設置便可 cursor.execute("select * from class") row_4 = cursor.fetchall() print(row_4) # [{'id': 1, 'class_name': '一班'}, {'id': 2, 'class_name': '二班'}, {'id': 3, 'class_name': '三班'}, {'id': 4, 'class_name': '四班'}, {'id': 5, 'class_name': '五班'}, {'id': 7, 'class_name': '五班'}] # 提交,否則沒法保存新建或者修改的數據 conn.commit() # 關閉遊標 cursor.close() # 關閉鏈接 conn.close()
能夠使用cursor.scroll(num,mode)來移動遊標位置,如:sql
使用with簡化鏈接過程服務器
import pymysql import contextlib #定義上下文管理器,鏈接後自動關閉鏈接 @contextlib.contextmanager def mysql(host='127.0.0.1', port=3306, user='root', passwd='', db='User',charset='utf8'): conn = pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=db, charset=charset) cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) try: yield cursor finally: conn.commit() cursor.close() conn.close() # 執行sql with mysql() as cursor: print(cursor) row_count = cursor.execute("select * from tb") row_1 = cursor.fetchone() print( row_count, row_1)