Python資料庫讀寫

2021-10-23 04:49:30 字數 2927 閱讀 7722

我們的自動化的工作裡面經常需要對資料庫進行讀寫的很常見的就是介面測試

1、驗證資料(有的時候用例的某個檢查點需要我們直接訪問資料庫,大部分時候我們直接通過介面就可以驗證了)

2、做效能測試的時候經常需要大量的插入資料,這個時候在介面上慢慢點效率太低,也需要我們直接去運算元據庫

測試人員去對資料庫裡面的資料進行驗證、插入、更新,python語言去操作是非常方便的

下面紅色部分是我們寫的訪問資料庫的程式,對資料庫來說可以稱之為客戶端程式。我們訪問資料庫的時候,我們的程式不是直接訪問資料庫裡面的磁碟資料的,我們的程式訪問資料庫的時候是通過  資料庫服務  訪問的 ,把請求通過網路傳遞給資料庫服務,告訴他我要查詢修改某張表裡面的資料...然後資料庫服務再去修改資料庫裡面的資料

我們寫的程式必須通過網路和資料庫服務建立連線

通過網路,我們的程式發過去的請求是一種什麼語法? sql語句

(把資料庫安裝好之後經常要檢查資料庫服務有沒有啟動 service my sql d start 啟動資料庫服務)

大體了解這個原理,接下來我們就可以安裝環境了(既然是用python語言,我們要安裝乙個客戶端的庫,因為我們的程式是要通過和資料庫服務之間建立連線來傳送sql語句的,所以說我們要怎麼建立連線呢?自己寫這個**很麻煩,我們需要把乙個第三方的庫裝起來,通過這個第三方的庫去運算元據庫就直接呼叫裡面的函式就可以了,非常的方便 這個庫推薦兩個:①mysqlclient②pymysql,這堂課以mycqlclint為例)

ps:在安裝mysqlclient庫時遇到了乙個問題,pip指令不能在python指令下執行,必須在windows指令下執行,不懂為什麼,先記錄一下,安裝好如下圖(在屋子裡太冷惹,想去外面曬太陽~希望天氣快點暖和起來可以穿新買的裙子~)

① python與資料庫建立連線

import mysqldb

#與資料庫服務建立連線 返回值代表連線的物件 預設埠號3306可以不寫,如果不是3306才寫

conn=mysqldb.connect(

host='localhost',

user='root',

passwd='123123',

db='mysql',

#要訪問資料庫管理系統中的哪個庫,資料庫管理系統裡面可以建立很多個資料庫

charset='utf8'

)

②建立乙個游標物件

#要操縱資料庫裡面的資料首先要通過連線物件建立乙個游標物件,要執行sql語句必須通過這個物件

c=conn.cursor()

③讀取資料庫里的資料

讀這個表

c.execute('select * from sq_cource')
法一

#rowcount是游標物件的乙個屬性,告訴我們前面那個查詢語句總共查詢多少條語句

for i in range(c.rowcount):

row=c.fetchone()

print(row)

法二

rows=c.fetchall()   

#這個函式返回所有的資訊,就不需要用迴圈了

法三

rows=c.fetchmany(100)   

#這個函式返回100條資訊

讀出來是為了程式幫我們分析資料,比如說我們寫了乙個自動化的測試程式,通過介面向裡面

新增了一條資料,然後我們要判斷資料庫裡是否存在我們新增的資料,比如我們新增了python課

資料庫每一行的第二個資訊是課程名

for i in range(c.rowcount):  

row=c.fetchone()

if row[1]=='python': #取出元組裡的第二個元素,用索引 從0開始,第二個下標是1

print('檢查點=>>python課程找到,通過')

break

以上是乙個典型的自動化的應用場景(讀取資料,然後分析裡面有沒有我們要找的)

④插入資料

insert into sq_course(name,'desc',display_idx)values('haha','123',6) 在sql裡寫的**是這樣

desc是關鍵字,要用反斜槓引起來;   因為裡面有引號,所以外面換成雙引號

用程式插入

c.execute("insert into sq_course(name,'desc',display_idx)values('haha','123',6)") 

conn.commit() # 凡是對資料庫進行了修改,都要呼叫commmit方法

假如現在在做效能測試,要插入1000門課程資訊,怎麼做?

for x in range(1000):

c.execute(f"insert into sq_course(name,'desc',display_idx)

values('測試課程','測試課程',6)")

⑤關閉

conn.close()

Python讀寫Oracle資料庫

最近專案中需要用到python呼叫oracle實現讀寫操作,踩過很多坑,歷盡艱辛終於實現了。效能怎樣先不說,有方法後面再調優嘛。現在把 和注意點記錄一下。1.所需python工具庫 cx oracle,pandas,可以使用通過控制台使用pip進行安裝 電腦中已經安裝 2.實現查詢操作 工具庫匯入 ...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...