pymysql 是 Python3 鏈接 MySQL 的一個模塊,常見用法以下:python
[root@localhost ~]$ pip3 install pymysql # 安裝 pymysql 模塊
In [1]: import pymysql In [2]: conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456') # connect()用於鏈接MySQL數據庫,結果返回一個鏈接對象 # 經常使用的鏈接參數有:host 、user 、passwd 、db 、port In [3]: cur = conn.cursor() # 建立遊標,用來存放執行SQL語句所檢索出來的結果集 In [4]: cur.execute('show databases') # 使用遊標來執行SQL語句,8L表示結果有8行,結果會存存儲在遊標中 Out[4]: 8L In [5]: cur.fetchone() Out[5]: ('information_schema',) # fetchone()用於查看一條結果 In [6]: cur.fetchmany(3) Out[6]: (('mysql',), ('performance_schema',), ('test',)) # fetchmany()用於查看多條結果 In [7]: cur.fetchall() Out[7]: (('test1',), ('test2',), ('test3',), ('wordpress',)) # fetchall()用於查看全部結果
In [8]: cur.close() # 關閉遊標
In [9]: conn.close() # 關閉數據庫鏈接
在 Python 中的寫法:mysql
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import pymysql def connectMySQL(): db_config = { 'host': '127.0.0.1', 'port': 3306, 'user': 'root', 'passwd': '123456', 'db': 'mysql', 'charset': 'utf8', } conn = pymysql.connect(**db_config) return conn if __name__ == '__main__': conn = connectMySQL() cur = conn.cursor() try: cur.execute('show tables;') result = cur.fetchall() print(result) cur.close() conn.commit() <--- 這裏使用MySQL事務,若是執行SQL語句成功則提交,若是執行失敗則回滾 except: conn.rollback() print("執行SQL語句失敗!") finally: conn.close()
使用 MySQL 鏈接池:sql
咱們對數據庫進行查詢/插入/更新等操做,須要先鏈接數據庫,建立數據庫鏈接是一個很耗時的操做,爲了不屢次鏈接 MySQL 數據庫,咱們能夠使用 MySQL 鏈接池;
MySQL 鏈接池(Connection Pooling)是 MySQL 程序啓動時創建足夠的數據庫鏈接,並將這些鏈接組成一個鏈接池,由 MySQL 程序動態地對池中的鏈接進行申請,使用,釋放。數據庫
[root@localhost ~]$ pip3 install DBUtils # 安裝DBUtils
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import pymysql from DBUtils.PooledDB import PooledDB def connectMySQL(): db_config = { 'host': '127.0.0.1', 'port': 3306, 'user': 'game', 'passwd': 'cqbygame', 'db': 'mysql', 'charset': 'utf8', } pool = PooledDB(pymysql, 5, **db_config) # 建立鏈接池,指定建立5個數據庫鏈接 conn = pool.connection() # 之後每次須要鏈接數據庫就用connect()函數獲取鏈接 return conn if __name__ == '__main__': conn = connectMySQL() cur = conn.cursor() try: cur.execute('show tables;') result = cur.fetchall() print(result) cur.close() conn.commit() except: conn.rollback() print("執行SQL語句失敗!") finally: conn.close()