DBへのコネクションが2つ張られてしまう(未解決)
適当に作っていたコードを流石にこれだとマズすぎると思って、修正中。
そんな中、コネクションの数を調べていたら、1つだと想定していたコネクションが2つだったことのメモ。
コネクションの数は次のSQLで調べる。
SELECT * FROM information_schema.PROCESSLIST;
pythonコードは次のような感じ。
# Engineおよびconnectionの取得 engine = self.getEngine(self.DB_NAME) conn = engine.connect() ####ここで1つ目のコネクション作成 # MetaData の生成 meta = MetaData() # Engineに結びつける meta.bind = engine # SQLAlchemyのTableを使用して、データベースのテーブル定義からテーブルオブジェクトを作成する t_table = Table('テーブル名', meta, autoload=True) ####ここで2つ目のコネクション作成 selectQuery = select([ t_table ]).where( t_table.c.column== str(param) ) rows = conn.execute(selectQuery ).fetchall()
コネクション作成タイミングは次の2箇所。
・conn = engine.connect()によるコネクション取得時に1つ目のコネクションを作成。
・Table('テーブル名', meta, autoload=True)で、テーブル情報取得時に2つ目のコネクションを作成。
Table情報取得時に使用されるコネクションはSQLAlchemyの中で管理されており、自動生成されるようだ。
これを「conn = engine.connect()」で作成したコネクションを使用するように出来ないか。
それが無理なら、Table情報取得するオシャレな?方法を止めて作成したconnを使用して単純にSQL発行するか。
いずれにせよ、解決策を模索中。