現在、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:
パフォーマンスの異なる方法とその変形を測定する方法はありますか?ここでドキュメント
を調べ
ていたところ、すべてのメソッドでセッションを作成するのではなく、セッションの単一インスタンスを作成して全体で使用する必要があることに気付きました。これについてフィードバックをお寄せください。そして、ここで物事を行うための最良の方法を教えてください。
どんな種類の助けもここで大いに感謝されるでしょう。