在我們做自動化測試工作中,肯定會用到查詢數據庫驗證數據庫的操作;
本篇主要寫的就是封裝好的針對數據庫的基本操作,如果工作中遇到造數據也可以直接調用;
代碼:
# project :Python_Script # -*- coding = UTF-8 -*- # Autohr :XingHeYang # File :operation_mysql_database.py # time :2019/11/5 10:24 # Describe :封裝對mysql數據庫的基本操作 # --------------------------------------- import pymysql class Operation_Mysql(): def __init__(self,host,user,password,db,charset='utf8'): ''' 初始化連接mysql的操作 :param host: 傳入mysql主機地址 :param user: 傳入連接mysql用戶名 :param password: 傳入連接密碼 :param db: 指定數據庫名 :param charset: 字符編碼格式 默認utf8編碼 ''' self.connect = pymysql.connect( # 連接mysql host = host, user = user, password = password, db = db, charset = charset, ) def __execute_sql(self,sql): ''' 該方法是一個私有方法,主要用於執行sql語句 :param sql: 傳入要執行的sql語句 :return: 如果是查詢語句,將會返回查詢的結果值。 :return_type:返回tuple類型 ''' with self.connect.cursor() as cursor: # 通過游標對象獲取容器 cursor.execute(sql) # 通過游標對象執行sql語句 data = cursor.fetchall() # 獲取執行sql后的返回數據,插入數據和創建表是沒有返回數據的,結果為空元組 self.connect.commit() # 通過連接對象將對數據庫的操作進行提交 return data # 返回查詢后的數據 def insert_data(self,table,*args): ''' 封裝的插入數據的方法 :param table: 傳入要插入數據的表名 :param args: 傳入插入的數據值,傳入類型是元組 ''' sql = "insert into %s values %s" % (table, tuple(*args)) self.__execute_sql(sql) # 調用私有方法,執行sql語句 def create_table(self,tbale,table_type): ''' 封裝創建表的方法 :param tbale: 傳入要創建的表名 :param table_type: 傳入要創建表的字段 數據類型和表約束;傳入一個字符串的類型 ''' sql = "create table %s(%s)"%(tbale,table_type) self.__execute_sql(sql) # 調用私有方法,執行sql語句 def select_data(self,sql): ''' 封裝的查詢語句的方法 :param sql: 因查詢的方式太多,所以直接傳入sql語句進行查詢 :return: 返回查詢后的結果數據 ''' data = self.__execute_sql(sql) return data def execute_sql(self,sql): ''' 公有的執行sql語句方法;主要用於修改數據和刪除數據 :param sql: 傳入需要執行的sql語句 ''' self.__execute_sql(sql)
def close_connect(self): ''' 主要用於關閉連接 :return: ''' self.connect.close()
if __name__ == '__main__': # 創建操作數據庫對象 operation = Operation_Mysql('localhost','root','123456','hrdb') # 創建表 type = 'name varchar(20),age int,sex char(10)' operation.create_table('userInfo',type) # 插入數據 tuple1 = ['zhangsan', 18, 'man'] operation.insert_data('userInfo',tuple1) # 查詢數據,並輸出 sql = 'select * from userInfo' print(operation.select_data(sql)) # 刪除數據 sql = "delete from userInfo" operation.execute_sql(sql)
operation.close_connect()
