接口自動化之?dāng)?shù)據(jù)庫調(diào)用類封裝

作為一個(gè)測試,數(shù)據(jù)庫對我們來說那是異常熟悉,基本的查詢語言啥的更是不在話下。今天,我們要學(xué)習(xí)的是自動化測試中對數(shù)據(jù)庫的操作。對于自動化而言,對于數(shù)據(jù)庫的操作90%也是限于查詢操作。話不多說,進(jìn)入正題!

1.數(shù)據(jù)庫連接基礎(chǔ)

操作過數(shù)據(jù)庫的我們都知道,要操作數(shù)據(jù)庫,首先安裝一個(gè)電腦客戶端(嗯~廢話)。然后怎么連接數(shù)據(jù)庫呢,就是后端給我們一個(gè)用戶名和密碼去連接一個(gè)數(shù)據(jù)庫。如圖:
數(shù)據(jù)庫連接界面

只要我們把上面的東西都準(zhǔn)確無誤的填好,我們就連上了數(shù)據(jù)庫。連上之后,哈哈,想操作哪個(gè)表就操作哪個(gè)表。
由此我們可以得知,如果用代碼操作數(shù)據(jù)庫。那么無外乎就兩步操作:
1.連接上你所需要操作的數(shù)據(jù)庫。
2.通過sql語句來操作你所需要的數(shù)據(jù)。

2.pymysql

2.1 什么是pymysql

為了使python連接上數(shù)據(jù)庫,你需要一個(gè)驅(qū)動,這個(gè)驅(qū)動是用于與數(shù)據(jù)庫交互的庫。python中與數(shù)據(jù)庫交互的庫有很多:

  • 對接mysql數(shù)據(jù)庫使用到的庫為pymysql模塊
  • 對接oracle數(shù)據(jù)庫,使用的第三方庫為cx_Oracle
  • 對接sqlserver使用的第三方庫:pymssql

在這里我們以pymysql為例。安裝pymysql與安裝其他依賴庫沒有區(qū)別,要么直接pip install,要么pycharm中手動搜索后安裝。這里不詳細(xì)講安裝過程。

3.數(shù)據(jù)庫模塊封裝

3.1 pymysql基本方法

安裝完成后我們就可以直接使用pymysql了,pymysql中提供一個(gè)方法connect();入?yún)橹鳈C(jī)名、用戶名、密碼、端口號等等,正好與我們上面“mysql連接圖”中要輸入的內(nèi)容一一對應(yīng)。執(zhí)行完connect()方法,我們就成功的連接上了想要連接的數(shù)據(jù)庫。這一步就對應(yīng)了我們平時(shí)Navicat上的數(shù)據(jù)庫連接操作。那么,我們怎么執(zhí)行sql語句呢?
調(diào)用connect()方法成功后,會返回一個(gè)connect的對象,我們通過返回的connect對象的.cursor()方法再創(chuàng)建一個(gè)cursor對象,通過cursor.execute()方法,將自己所要執(zhí)行的sql語句作為入?yún)?zhí)行execute方法,就能對數(shù)據(jù)進(jìn)行操作了!

3.1 數(shù)據(jù)庫操作的簡單封裝

對于我們?nèi)粘J褂?,下面封裝的數(shù)據(jù)庫模塊足夠使用,具體參照如下代碼:

import pymysql
from scripts.handle_config import ConfigLoader


class HandleMySql:
    """數(shù)據(jù)庫處理類"""

    def __init__(self):
        config = ConfigLoader()
        self.conn = pymysql.connect(host=config.get_value("mysql", "host"),
                                    user=config.get_value("mysql", "user"),
                                    password=config.get_value("mysql", "password"),
                                    db=config.get_value("mysql", "db"),
                                    port=config.get_int("mysql", "port"),
                                    charset="utf8",
                                    cursorclass=pymysql.cursors.DictCursor)
        self.cursor = self.conn.cursor()

    def get_value(self, sql, args=None, is_more=False):
        """
        獲取數(shù)據(jù)庫的值
        :param sql: sql語句
        :param args: 其他參數(shù)
        :param is_more: 是否顯示全部,默認(rèn)顯示一套條數(shù)據(jù)
        :return: 字典為item的列表數(shù)據(jù)
        """
        self.cursor.execute(sql, args)
        self.conn.commit()
        if is_more:
            return self.cursor.fetchall()
        else:
            return self.cursor.fetchone()

    def close(self):
        """關(guān)閉"""
        self.cursor.close()
        self.conn.close()


# if __name__ == '__main__':
#     handle_sql = HandleMySql()
#     sql = "select * from member where MobilePhone = %s;"
#     single_data = handle_sql.get_value(sql, "15828641020")
#     print(single_data)

使用時(shí)就像main函數(shù)紅一樣,先創(chuàng)建一個(gè)HandleMySql對象,然后調(diào)用此對象的get_value()方法,就可以得到一條數(shù)據(jù)或者一個(gè)列表格式的數(shù)據(jù),很是方便!哈哈,打完收工??!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容