我在这样一个场景中:
由于SQL经常返回大量记录,因此我经常以管道方式使用脚本,即python script.py | head -10
。当然,当我用管道将其传输到head
时,会出现套接字错误。对异常的修复是:
from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE,SIG_DFL)
我的问题是,对于管道(例如head -5
),数据库套接字连接是自动关闭的还是正确关闭的?如果没有,我如何在脚本中关闭它以适应管道的使用
代码结构如下所示:
def getIter(n, conn):
for i in xrange(n):
yield i
def p(l):
for x in l:
print x
if __name__ == '__main__':
# dbms_socket_conn.open()
# get iterator
ii = getIter(100, conn=None)
p(ii)
print "is the dbms connection got closed in case of pipe (e.g. head -5) ?"
# dbms_socket_conn.close()
你可以这样做:
以确保代码执行close方法
编辑: “head-5”只显示输出的前5行,但这并不意味着脚本停止。如果您尝试这样做:
您将看到文件被写入,这意味着finally子句被执行。你应该把dbms\u socket\u conn.close()放在那里
相关问题 更多 >
编程相关推荐