Nach dem, was wir in So schließen Sie die SQLalchemy-Verbindung in MySQL kommentiert haben , überprüfe ich die Verbindungen, die SQLAlchemy in meiner Datenbank erstellt, und kann sie nicht schließen, ohne Python zu beenden .
Wenn ich diesen Code in einer Python-Konsole ausführe, bleibt die Sitzung geöffnet, bis ich Python verlasse:
from sqlalchemy.orm import sessionmaker
from models import OneTable, get_engine
engine = get_engine(database="mydb")
session = sessionmaker(bind=engine)()
results = session.query(OneTable.company_name).all()
# some work with the data #
session.close()
und die einzige Problemumgehung, die ich gefunden habe, um es zu schließen, ist, engine.dispose()
am Ende anzurufen .
Gemäß den Kommentaren in dem Link, den ich oben gegeben habe, sind meine Fragen jetzt:
- Warum ist es
engine.dispose()
notwendig, Sitzungen zu schließen? - Reicht nicht
session.close()
aus?
sqlalchemy.pool.NullPool
löst Ihr Problem nicht?