python(版本2.7,3.3)在程序完成后是否立即关闭数据库连接?
例如:
import MySQLdb
conn = sqlite3.connect(host="localost", user="adam", password="12345", db ="my_db")
c = conn.cursor()
c.execute('''SELECT * FROM MY_TABLE''')
cur.close() # Do I really need that ?
conn.close() # Do I really need that ?
如果我一个接一个地一次又一次地运行这个脚本,那么关闭连接会有问题吗?
PS。是的,我知道最好的做法是关闭所有资源。
答案 0 :(得分:0)
正如您所提到的,您应该在代码中明确关闭连接。 大多数情况下,隐式关闭连接不会导致问题,但是有些DBMS可能会发生奇怪的事情。
SQLite将回滚任何打开的事务,例如。
另外,我在某处你可以使用with
语句阅读,当你使用MYSQL时可能值得谷歌搜索。
答案 1 :(得分:0)
你的代码片段有点混乱,似乎混合了mysql和sqlite3。
我猜你一直都是mysql,并将你的代码改写为:
import MySQLdb
conn = MySQLdb.connect(host="127.0.0.1", user="test", passwd="", db="test")
c = conn.cursor()
c.execute('''SELECT now()''')
然后我使用netstat和mysql进程列表检查了连接状态,并且在我的linux上看来,当脚本结束时,连接已关闭,将tcp连接保留在TIME_WAIT中按预期进行。