搜尋

首頁  >  問答  >  主體

python - 每次操作数据库的时候需要关闭么?

每次操作数据库的时候需要关闭么? 会不会自动关闭,还是自己关闭,哪种方式好

迷茫迷茫2841 天前1013

全部回覆(4)我來回復

  • 阿神

    阿神2017-04-17 11:21:25

    1 每次都需要關閉
    2 逾時之後大部分DBMS (以及其SDK)都會在TCP層面上斷開客戶端.
    3 一定養成手動關閉(手動指的是顯式地調用關閉的方法,當然你可以自己寫個自動化的封裝來調用關閉,或者某些SDK裡封裝好了的關閉)的習慣,這個不是好習慣壞習慣的問題,而是必須做到的.

    因為資料庫資源是寶貴的(連接數是寶貴的) 如果你沒有關閉,等待自動釋放可能會非常長時間,這個時間裡其他線程進程將無法使用這個連接資源. 如果到處沒有關閉, 那麼很容易若干次操作以後用光連接數.(很多"大型"資料庫的連線數也不過就是10-20)

    回覆
    0
  • 黄舟

    黄舟2017-04-17 11:21:25

    用聲明

    http://docs.python.org/2/reference/co...

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 11:21:25

    • 一般來說這個問題透過函式庫解決,開發者只需要根據呼叫函式庫的規範操作即可,例如sqlalchemy。
    • 如果框架/函式庫明確提供了關閉操作,那麼請呼叫-一般來說是透過繼承或其他抽象方式與基礎框架(例如web框架)綁定,不需要每次和資料庫互動自己寫關閉程式碼。
    • 最後你得知道,連接資料庫其實是一個代價很高的操作,所以實際上不可能針對每個請求連接關閉資料庫。這時候框架或函式庫提供的所謂“關閉”操作準確來說應該是“回收”,通常是回收到一個連接池,然後可以供給其他進程/執行緒呼叫。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:21:25

    如果本次的rs不能關閉,需要交給下一段程序方法使用,建議一定要在交給的下一段程序使用完成之後立即關閉rs,connection。否則,資料庫資源一直被佔用,這樣的話,你考慮過資料庫的感受麼。 。 。

    回覆
    0
  • 取消回覆