Python pymysql 模塊

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()
相關文章
相關標籤/搜索