我是否需要在短python脚本中关闭数据库连接?

时间:2014-04-22 12:10:34

标签: python mysql database

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。是的,我知道最好的做法是关闭所有资源。

2 个答案:

答案 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中按预期进行。