Python MySQLdb连接 - 何时打开/关闭新连接?

时间:2013-03-08 10:39:36

标签: python mysql database-connection mysql-python

我正在使用一些运行Tornado Web服务器的应用程序,它们都使用mysqldb连接到MySql数据库。当我启动服务器时,它会实例化一个DB类(下面),它打开与DB的连接。所有交易都是使用相同的连接进行的 - 我不确定这是个好主意。

class RDSdb(object):

    def __init__(self):
        self.connect()

    def connect(self):
        self.connection = MySQLdb.connect(cursorclass = MySQLdb.cursors.SSDictCursor, host=self.RDS_HOST,
                                    user=self.RDS_USER, passwd=self.RDS_PASS, db=self.RDS_DB)

    def get_cursor(self):
        try:
            cursor = self.connection.cursor()
        except (AttributeError, MySQLdb.OperationalError):
            self.connect()
            cursor = self.connection.cursor()
        return cursor

    def fetch_by_query(self, query):
        cursor = self.get_cursor()
        cursor.execute(query)
        result = cursor.fetchall()
        cursor.close()
        return result

我很确定我不应该为每笔交易打开/关闭一个新连接,但是,我应该什么时候开始?

我注意到其他一些有点偏离,我肯定是相关的:当我需要更新我的一个db表的架构(例如:alter table)时,整个表都被锁定并且没有响应 - 直到我通过与数据库的开放连接杀死我的3个应用程序 - 我意识到其中一个连接阻止了此更新。

最佳做法是什么?想法?

感谢。

0 个答案:

没有答案