我很抱歉,如果这已经得到了回答。多年来我一直在反复寻找,但还没有找到一个合适的解决方案来实际终止我的python脚本在postgresql13服务器上创建的会话。一个简单的例子:
from sqlalchemy import create_engine, text
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import sessionmaker
# Create engine
connection_string = v.connection_string
engine = create_engine(connection_string)
# Create a Session
Session = sessionmaker(bind=engine)
session = Session()
try:
# Use session connection
with session.connection() as connection:
connection.execute(text('DROP TABLE IF EXISTS
interim_schema.location;'))
session.commit()
except SQLAlchemyError as e:
print(f"Error occurred while executing SQL commands: {e}")
session.rollback()
finally:
session.close()
我的理解是这应该完全关闭会话,但它没有。
我尝试了engine.dispose(),但它只是重置了连接池。我已经尝试了如上所述的推荐会话,它也不会终止会话。我希望数据库连接在postresql服务器端消失。
2条答案
按热度按时间i1icjdpr1#
这只是个例子我建议你阅读更多关于
context manager
和decorators
在python中的内容。真的很有帮助k0pti3hp2#
你能提供更多的信息吗?
另外,启用 sqlalchemy engine echo logging功能:
例如,当我运行与你的代码非常相似的代码时(我试图删除
"foo"
),我得到以下输出:从
BEGIN (implicit)
及以下的一切都很有趣,并告诉我程序配置不正确。请分享更多信息,我可以尝试帮助你。