我尝试设置Jupyter Notebook以使用SQL Magic(%和%%表示法)访问IBM DB2z数据库。
我按照本教程安装DB2 SQLAlchemy驱动程序: https://blog.4loeser.net/2016/11/sql-magic-in-notebooks-in-ibm-data.html
现在我在Jupyter Lab中的代码如下:
<template>
<div class="modal">
<ul>
<li v-for="receipt in receipts">{{ receipt.date }} {{ receipt.email }} {{ receipt.item }}</li>
</ul>
</div>
</template>
<script>
export default {
props: [receipts],
data() {
return {
receipts: [],
receipt: {
id: '',
date: '',
email: '',
item: ''
}
}
}
}
</script>
但是会导致以下错误:
!pip install --user ipython-sql
!pip install --user ibm_db
!pip install --user ibm_db_sa
import getpass
import ibm_db
import ibm_db_sa
import sqlalchemy
user = input("User: ")
passw = getpass.getpass("Passwort: ")
# loads the SQL magic extensions
%load_ext sql
%sql db2+ibm_db://$user:$passw@xxx.xxx.xx:55555/XXX
作为使用熊猫的实现,我可以排除用户名密码或驱动程序中的错误:
(ibm_db_dbi.ProgrammingError) ibm_db_dbi::ProgrammingError:
SQLNumResultCols failed: [IBM][CLI Driver][DB2] SQL0206N "CURRENT" is
not valid in the context where it is used. SQLSTATE=42703 SQLCODE=-206
(Background on this error at: http://sqlalche.me/e/f405)
Connection info needed in SQLAlchemy format, example:
postgresql://username:password@hostname/dbname
or an existing connection: dict_keys([])
关键字CURRENT似乎存在问题,但在这种情况下,我无法弄清pandas和SQL Magic之间的区别。
答案 0 :(得分:0)
这可能是ibm_db_sa模块中的已知问题。 请参阅此issue,目前看来它正在等待修复。 通过github而不是stackoverflow追逐它可能是明智的。
答案 1 :(得分:0)
我建议将ibm_db与ibm_db_dbi包装器一起使用。请查看我的db2帖子以获取更好的解释