V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wwjvtwoex
V2EX  ›  数据库

为什么要关闭游标

  •  
  •   wwjvtwoex · 2017-10-23 16:08:53 +08:00 · 2074 次点击
    这是一个创建于 2570 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用 Python 操作 SQLite3 / Postgresql / MySQL 关闭连接之前,必须关闭游标吗

    在 SO 中没人回答 https://stackoverflow.com/questions/43927799/why-close-a-cursor-for-sqlite3-in-python
    本站中也没人回答 https://www.v2ex.com/t/93964

    哪位高手解释一下
    13 条回复    2017-10-23 23:59:15 +08:00
    wxyz
        1
    wxyz  
       2017-10-23 16:13:02 +08:00
    看到光标的我表示很方。。。还以为打字的那个光标呢~
    noNOno
        2
    noNOno  
       2017-10-23 16:13:48 +08:00
    你只需要百度一下
    forestyuan
        3
    forestyuan  
       2017-10-23 16:14:57 +08:00
    游标会占用资源,所以用完需要关闭。
    wwjvtwoex
        4
    wwjvtwoex  
    OP
       2017-10-23 16:15:59 +08:00
    @wxyz 已经改了
    forestyuan
        5
    forestyuan  
       2017-10-23 16:16:34 +08:00   ❤️ 1
    在关闭连接之前关闭游标是一个 good practice
    wwjvtwoex
        6
    wwjvtwoex  
    OP
       2017-10-23 16:21:19 +08:00
    @forestyuan 如果立即断开数据库连接,是否就不用关闭了
    yulitian888
        7
    yulitian888  
       2017-10-23 16:32:13 +08:00
    把游标视为一个指针,琢磨琢磨,指针不释放是不是很容易内存溢出哈? DBMS 可不是高级语言那种自带垃圾回收机制的哦
    yulitian888
        8
    yulitian888  
       2017-10-23 16:33:42 +08:00
    @wwjvtwoex #6 接上条,直接断开数据库连接套用到指针上,就该叫做“野指针”喽,嚯嚯
    jy02201949
        9
    jy02201949  
       2017-10-23 16:38:01 +08:00
    这东西把数据读到内存里跑所以很快啊,不关闭不就一直占着内存吗
    noNOno
        10
    noNOno  
       2017-10-23 16:40:54 +08:00
    会话结束会自动清理游标.
    但如果用连接池,会话不结束就会导致资源不释放
    forestyuan
        11
    forestyuan  
       2017-10-23 17:01:24 +08:00
    @wwjvtwoex 有些数据库会在连接断开以后,自动把游标清理掉,但是你要查相关文档,确定有这个特性才行。
    但是,万一哪天你们要换一个不支持这个特性的数据库呢?所以跟着 good practice 做才是最好的
    afpro
        12
    afpro  
       2017-10-23 20:43:23 +08:00   ❤️ 1
    就好比你 malloc 了一堆东西 如果进程马上就退出了 你可以不 free 但是不能那么写代码……
    oswuhan
        13
    oswuhan  
       2017-10-23 23:59:15 +08:00   ❤️ 1
    “你上完公厕,如果不把门口的‘厕所有人’的标识拿掉,别人就不会使用这间厕所”。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5506 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 08:41 · PVG 16:41 · LAX 00:41 · JFK 03:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.