Python有GC,使用pymysql时还需要主动关闭连接吗?
学习 Python 的时候,别人都会说使用 pymysql 访问 MySQL 需要显示地主动关闭连接,否则数据库连接会慢慢增多,代码应该这样写,
import pymysql
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='12345',
database='demo',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute('select * from user')
res = cursor.fetchone()
print(res)
# 显示主动关闭
cursor.close()
conn.close()
或者使用上下文的方式,代码这样写(with会帮忙关闭),
import pymysql
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='12345',
database='demo',
charset='utf8'
)
with conn:
with conn.cursor() as cursor:
cursor.execute('select * from user')
res = cursor.fetchone()
print(res)
但是,我就想看看如果不关闭连接,数据库中的连接数会不会增多,于是写出了下面的代码。然后,我发现数据库的连接并不会随着代码运行次数的增加而增加,经过测试和思考,我发现这是因为Python中的GC,程序结束后会自动回收这些变量(连接)。那我的疑问就来了,还需要主动关闭连接吗,或者有哪些场景需要我们主动关闭连接?
import pymysql
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='12345',
database='demo',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute('select * from user')
res = cursor.fetchone()
print(res)
推荐文章: