Python之使用上下文管理器實現連線MySQL

2021-09-25 08:39:38 字數 1846 閱讀 7084

import pymysql

import traceback

class

mysqlcontextmanager

:"""

mysql context manager

"""def__init__

(self, host=

"localhost"

, port=

3306

, user=

"root"

, password=

"123456"

, database="")

: self.host = host

self.port = port

self.user = user

self.password = password

self.database = database

def__enter__

(self)

:"""

上文管理器 返回的結果 會被賦給as 關鍵字之後的變數

:return: cursor

"""try:

self.db_conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.password,

database=self.database, charset=

"utf8"

) self.cursor = self.db_conn.cursor(

)return self.cursor

except exception as e:

traceback.print_exc(

)raise e

def__exit__

(self, exc_type, exc_val, exc_tb)

:"""

下文管理器 選擇性地處理包裝**塊**現的異常

:param exc_type: 異常型別 預設為 none,發生異常,引數被填充

:param exc_val: 異常例項 預設為 none,發生異常,引數被填充

:param exc_tb: 異常回溯 預設為 none,發生異常,引數被填充

:return:

"""try:

if exc_type:

self.db_conn.rollback(

)# 返回false 傳播異常

# 返回true 終止異常 不要這麼做

# 丟擲不同的異常 代替 原有異常

return

false

else

: self.db_conn.commit(

)except exception as e:

raise e

finally

: self.cursor.close(

) self.db_conn.close(

)if __name__ ==

'__main__'

:# 根據實際,傳入資料庫引數

with mysqlcontextmanager(

)as db_cursor:

select_sql =

"select * from test"

# 執行sql語句 返回影響的行數

db_cursor.execute(select_sql)

# 返回執行結果

result = db_cursor.fetchall(

)print

(result)

python使用上下文管理器運算元據庫

with 語法用於簡化資源操作的後續清除操作,是 try finally 的替代方法,實現原理建立在上下文管理器之上 如下,資料庫相關操作依庫 from pymysql import class db def init self,my database1,my password self.conn ...

python 上下文管理器

上下文管理器允許你在有需要的時候,精確地分配和釋放資源。使用上下文管理器最廣泛的案例就是with語句了。想象下你有兩個需要結對執行的相關操作,然後還要在它們中間放置一段 上下文管理器就是專門讓你做這種事情的。舉個例子 with open some file w as opened file open...

python上下文管理器

上下文管理器是乙個包裝任意 塊的物件。上下文管理器保證進入上下文管理器時,每次 執行的一致性 當退出上下文管理器時,相關資源會被正確 這裡被正確 指的是在 exit 方法自定義 比如關閉資料庫游標 值得注意的是,上下文管理器一定能夠保證退出步驟的執行。如果進入上下文管理器,根據定義,一定會有退出步驟...