Я использую SQL Magic для подключения к экземпляру db2. Однако я нигде не могу найти синтаксис того, как закрыть соединение, когда я закончу запрашивать базу данных.
Как закрыть соединение при использовании Jupyter SQL Magic?
Ответы (5)
вы не можете явно закрыть соединение с помощью Jupyter SQL Magic. Фактически, это один из недостатков использования Jupyter SQL Magic для подключения к DB2. Вам нужно закрыть сеанс, чтобы закрыть соединение с Db2. Надеюсь это поможет.
Вы пробовали: %sql connect reset
Вы также можете перезапустить ядро.
Это, вероятно, не очень полезно, и в той степени, в которой это возможно, вероятно, не будет работать в будущем. Но если вам нужен действительно хакерский способ закрыть соединение, я смог сделать это следующим образом (для базы данных postgres я предполагаю, что это похоже на db2):
In[87]: connections = %sql -l
Out[87]: {'postgresql://ngd@node1:5432/graph': <sql.connection.Connection at 0x7effdbcf6b38>}
In[88]: conn = connections['postgresql://ngd@node1:5432/graph']
In[89]: conn.session.close()
In[90]: %sql SELECT 1
...
StatementError: (sqlalchemy.exc.ResourceClosedError) This Connection is closed
[SQL: SELECT 1]
[parameters: [{'__name__': '__main__', '__doc__': 'Automatically created module for IPython interactive environment', '__package__': None, '__loader__': None, '__s ... (123202 characters truncated) ... stgresql://ngd@node1:5432/graph']", '_i28': "conn = connections['postgresql://ngd@node1:5432/graph']\nconn.session.close()", '_i29': '%sql SELECT 1'}]]
Большая проблема в том, что если вы хотите переподключиться, это не сработает. Даже после запуска %reload_ext sql и повторной попытки подключения он по-прежнему считает, что соединение закрыто, когда вы пытаетесь его использовать. Поэтому, если кто-то не знает, как исправить такое поведение, это полезно только для отключения, если вы не хотите повторно подключаться снова (к той же базе данных с теми же параметрами) перед перезапуском ядра.
сначала выйдите из записной книжки, если вы хотите закрыть соединение.