python中的with语句实例用法
admin
2023-07-12 05:03:19
0

    今天同事找到我说,他用pyton连接不上数据库。出于安全考虑,我们的数据库不允许直连,需要通过跳板机进行连接。所以,我认为是他没有使用ssh隧道。结果看了代码后,发现使用了sshtunnel模块的。

    将他的代码拿来后,自己运行了一遍。也是报错(2013, 'Lost connection to MySQL server during query')。以为是网络原因,又接着运行了几遍,还是报相同的错误。核对了下,连接信息都没问题的,检查网络,也没发现异常。顿时傻眼了,不知所措。就先去解决其他问题了。晚上回到家后,有着强迫症的我,又重新打开了代码,端详了起来。

with SSHTunnelForwarder(
         (ip, port),    #B机器的配置
         ssh_username="user",
         ssh_password="password",
         remote_bind_address=('ip', port)
         #logger=create_logger(loglevel=1)
) as server:
    conn = MySQLdb.connect(host='127.0.0.1',
			   port=server.local_bind_port,
			   username='username'
			   password='password'
			   db='db'
			   charset='utf8'	)
cursor = conn.cursor()
sql = 'select * from test limit 1'

如上代码,一开始并没发觉哪里不对,但后来看到那个报错,又想到前几天看到python中with的用法,似乎有了眉目。将sql代码放在with块里边执行。一切都OK了,瞬间觉得恍然大悟。这和with语句的特性密不可分。with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。

相关内容

热门资讯

OpenAI,正式组建机器人事... 人工智能(AI)领域巨头OpenAI发布公告,宣布大力扩张内部机器人事业部,正式全面切入硬件赛道,实...
星火空间完成近亿元Pre-A轮... 据星火空间消息,6月1日,合肥星火空间科技有限公司完成近亿元Pre-A轮融资。本轮融资由云泽资本和轨...
刚刚,宇树IPO闪电过会!王兴... 智东西 作者 | 许丽思 编辑 | 漠影 智东西6月1日报道,刚刚,宇树通过上交所上市委会议审议。 ...
京东工业发起百川计划 携手上游... 京东工业大模型生态发布会6月1日在北京举行,京东工业携手合作伙伴正式开启“百川计划”,从数据、模型、...
强脑科技预计今年机械手销量大涨... IT之家 6 月 2 日消息,据彭博社 2 日(今天)报道,强脑科技预计,随着中国人形机器人产业快速...
一图看懂差距!iPhone 1... 快科技6月2日消息,iPhone 18 Pro不同版本电池容量不同的相关话题冲上社交平台热搜榜,引发...
iPhone 18 Pro 或... 据科技狐,近日,知名爆料人 Sonny Dickson 分享了 iPhone 18 Pro 全套机模...
武契奇:不排除卸任总统后担任总... 塞尔维亚总统武契奇近期密集释放政坛人事与大选相关信号,明确无意在 2027 年总统任期届满后谋求连任...
6月新机夯到拉盘点,告诉你哪台... 现在这形势,手机升价是不可能躲得过的了,而且涨价期至少持续两年。那既然内存涨价躲不过,就只能选升级大...
伊朗公开已故最高领袖哈梅内伊安... 新华社德黑兰6月2日电 据伊朗伊斯兰共和国通讯社2日报道,根据伊朗已故最高领袖阿里·哈梅内伊生前遗愿...