我正在使用SQL Magic连接到一个db2示例,但是,在查询完数据库后,我似乎找不到有关如何关闭连接的语法。
vfhzx4xs1#
您不能使用JupyterSQLMagic显式关闭连接。实际上,这是使用JupyterSQLMagic连接到DB2的缺点之一。您需要关闭会话来关闭Db2连接。希望这对您有所帮助。
uklbhaso2#
这可能不是很有用,而且在某种程度上,它可能不能保证在未来工作。但是如果你需要一个非常笨拙的方法来关闭连接,我可以这样做(对于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,并试图再次连接后,当你试图使用它时,它仍然认为连接关闭了。所以除非有人知道如何修复这种行为,否则这只在你不想在重新启动内核之前再次连接(使用相同的参数连接到相同的数据库)的情况下有用。
nue99wik3#
您也可以重新启动内核。
oalqel3c4#
这是我发现的在会话结束时关闭所有连接的最简单的方法。你必须重新启动内核才能重新建立连接。
connections = %sql -l [c.session.close() for c in connections.values()]
rt4zxlrg5#
很抱歉迟到了,我刚刚开始使用SQL Magic,对不断出现的错误感到很恼火。这是一个有点笨拙的补丁,但这帮助了我使用它。
def multiline_qry(qry): try: %sql {qry} except Exception as ex: if str(type(ex).__name__) != 'ResourceClosedError': template = "An exception of type {0} occurred. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print (message) qry = '''DROP TABLE IF EXISTS EMPLOYEE; CREATE TABLE EMPLOYEE(firstname varchar(50),lastname varchar(50)); INSERT INTO EMPLOYEE VALUES('Tom','Mitchell'),('Jack','Ryan'); ''' multiline_qry(qry)
ctzwtxfj6#
如果要关闭连接,请先注销笔记本。
6条答案
按热度按时间vfhzx4xs1#
您不能使用JupyterSQLMagic显式关闭连接。实际上,这是使用JupyterSQLMagic连接到DB2的缺点之一。您需要关闭会话来关闭Db2连接。希望这对您有所帮助。
uklbhaso2#
这可能不是很有用,而且在某种程度上,它可能不能保证在未来工作。但是如果你需要一个非常笨拙的方法来关闭连接,我可以这样做(对于postgres数据库,我假设它类似于db2):
一个很大的问题是--如果你想重新连接,这似乎不起作用。即使在运行%reload_ext sql,并试图再次连接后,当你试图使用它时,它仍然认为连接关闭了。所以除非有人知道如何修复这种行为,否则这只在你不想在重新启动内核之前再次连接(使用相同的参数连接到相同的数据库)的情况下有用。
nue99wik3#
您也可以重新启动内核。
oalqel3c4#
这是我发现的在会话结束时关闭所有连接的最简单的方法。你必须重新启动内核才能重新建立连接。
rt4zxlrg5#
很抱歉迟到了,我刚刚开始使用SQL Magic,对不断出现的错误感到很恼火。这是一个有点笨拙的补丁,但这帮助了我使用它。
ctzwtxfj6#
如果要关闭连接,请先注销笔记本。