>  Q&A  >  본문

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

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

迷茫迷茫2743일 전959

모든 응답(4)나는 대답할 것이다

  • 阿神

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

    1 每次都需要关闭
    2 超时之后大部分DBMS (以及其SDK)都会在TCP层面上断开客户端.
    3 一定养成手动关闭(手动指的是显式地调用关闭的方法,当然你可以自己写个自动化的封装来调用关闭,或者某些SDK里封装好了的关闭)的习惯,这个不是好习惯坏习惯的问题,而是必须做到的.

    因为数据库资源是宝贵的(连接数是宝贵的) 如果你没有关闭,等待自动释放可能会非常长时间,这个时间里其他线程\进程将无法使用这个连接资源. 如果到处没有关闭, 那么很容易若干次操作以后用光连接数.(很多"大型"数据库的连接数也不过就是10-20)

    회신하다
    0
  • 黄舟

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

    用with statement

    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
  • 취소회신하다