我正在使用Python中的SQLAlchemy核心,并且阅读了许多文档,但仍然需要对engine.execute()
和connection.execute()
进行澄清。
据我了解,engine.execute()
与执行connection.execute()
相同,后跟connection.close()
。
我遵循的教程允许我在代码中使用它:
脚本中的初始设置
try:
engine = db.create_engine("postgres://user:pass@ip/dbname", connect_args={'connect_timeout': 5})
connection = engine.connect()
metadata = db.MetaData()
except exc.OperationalError:
print_error(f":: Could not connect to {db_ip}!")
sys.exit()
然后,我具有处理数据库访问的功能,例如:
def add_user(a_username):
query = db.insert(table_users).values(username=a_username)
connection.execute(query)
我应该在脚本结束之前打电话给connection.close()
吗?还是仅凭自身足够有效地处理?我最好在add_user()
结尾关闭连接,还是效率低下?
如果我确实需要在脚本结束之前调用connection.close()
,这是否意味着中断脚本会导致Postgres DB上的连接挂起?
答案 0 :(得分:0)
我发现this post有助于更好地了解sqlalchemy中的不同交互方式,以防您尚未阅读。
关于何时关闭数据库连接的问题:为每个语句执行创建和关闭连接确实非常低效。但是,您应该确保您的应用程序的全局流中没有连接泄漏。