目前我正在开发一个抽象 SQLAlchemy 的类。此类将充当帮助工具来验证数据库中的值。此类将用于回归/负载测试。测试用例将进行数十万次数据库查询。我的班级布局如下。
class MyDBClass:
def __init__(self, dbName)
self.dbName = dbName
self.dbEngines[dbName] = create_engine()
self.dbMetaData[dbName] = MetaData()
self.dbMetaData[dbName].reflect(bind=self.dbEngines[dbName])
self.dbSession[dbName] = sessionmaker(bind=self.dbEngines[dbName])
def QueryFunction(self,dbName, tablename, some arguments):
session = self.dbSession[dbName]()
query = session.query(requiredTable)
result = query.filter().all()
session.close()
def updateFunction(self, dbName, talbeName, some arguments):
session = self.dbSession[dbName]()
session.query(requiredTable).filter().update()
session.commit()
session.close()
def insertFunction(self, dbName, tableName, some arguments):
connection = self.dbEngines[dbName].connect()
requiredTable = self.dbMetaData[dbName].tables[tableName]
connection.execute(requiredTable.insert(values=columnValuePair))
connection.close()
def cleanClose(self):
# Code which will remove the connection/session/object from memory.
# do some graceful work to clean close.
我想编写 cleanClose() 方法,该方法应该删除可能由此类创建的对象。此方法应从内存中删除所有这些对象并提供干净的关闭。这也可以避免内存泄漏。我无法弄清楚应该从内存中删除哪些所有对象。有人可以建议我在这里需要做什么方法调用吗?
编辑1:
有什么方法可以衡量不同方法及其变体的性能吗?
我在这里浏览了文档,并意识到我不应该在每种方法中都创建会话,而应该创建单个会话实例并在整个过程中使用。请提供您对此的反馈。让我知道在这里做事的最佳方式是什么。
任何形式的帮助将不胜感激。