詳解Python如何利用pymysql封裝項目通用的連接和查詢

前言

一個項目通常都需要有數據庫,而對於python這門語言,除瞭一些框架自帶orm或者擴展的orm(像django自帶orm,flask則需要擴展的orm),使用orm必然有他的好處,但毫無疑問你要花時間學習這個orm,那麼接下來阿牛帶你們用pymysql簡單分裝一個通用的連接,關閉和查詢!

pymysql 介紹與安裝

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

在終端使用以下指令安裝:

pip3 install PyMySQL

pymysql 的使用

import  pymysql

# 打開數據庫連接,password為你的數據庫密碼,db是數據庫名
db = pymysql.connect(host="127.0.0.1",
                     user="root",
                     password=" ",
                     db=" ",
                     charset="utf8")

# 使用 cursor() 方法創建一個遊標對象
cursor = db.cursor()

# 使用 execute()  方法執行 SQL 查詢 
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法獲取單條數據.
data = cursor.fetchone()

print("Database version : %s " % data)

#關閉數據庫連接
db.close()

password為你的數據庫密碼,db是數據庫名,操作前請先建立好你的mysql數據庫。

如圖,我連接成功並且獲取到瞭我數據庫的版本!

方法execute執行我們的sql語句。

在獲取執行的結果時,可以指定獲取的結果的條數,可以使用的選項如下:

fetchone()         # 取得檢索結果的一條數據

fetchmany(n)       # 取得檢索結果的n條數據

fetchall()         # 取得檢索結果的所有數據

需要註意的是,與讀取文件時的指針類似,如果在同一段代碼中,先使用fetchone()獲取檢索結果的第一條數據,然後再使用fetchmany(2)的話,指針會在檢索結果的當前位置向後讀取執行結果,而不會從頭開始重新讀取檢索的結果。

獲取到的結果是元組。,如下圖:

封裝項目通用的連接和查詢

請自行寫入密碼和數據庫

import pymysql

# 創建連接
#return: 連接,遊標
def get_conn():

    # 創建連接
    conn = pymysql.connect(host="127.0.0.1",
                           user="root",
                           password="",
                           db="",
                           charset="utf8")
    # 創建遊標
    cursor = conn.cursor()# 執行完畢返回的結果集默認以元組顯示
    return conn, cursor


# 關閉遊標,連接
def close_conn(conn, cursor):
    cursor.close()
    conn.close()


def query(sql,*args):
    """
    封裝通用查詢
    :param sql:
    :param args:
    :return: 返回查詢到的結果,((),(),)的形式
    """
    conn, cursor = get_conn()
    cursor.execute(sql,args)
    res = cursor.fetchall()
    close_conn(conn, cursor)
    return res

因此,我們在查詢時隻需要調用query()函數就行,*args可以讓其傳入任意個參數或者不傳參數,隻需要sql語句中的占位符和參數個數對應就可以!

使用如下圖所示

結語

隻要你的sql過關,pymsql也可以幫助你完成項目!不一定需要使用orm哦!

以上就是詳解Python如何利用pymysql封裝項目通用的連接和查詢的詳細內容,更多關於Python pymysql封裝連接 查詢的資料請關註WalkonNet其它相關文章!

推薦閱讀: