Sqlalchemy无法为Kaggle笔记本电脑加载

时间:2020-06-05 00:59:24

标签: python sqlalchemy db2 kaggle

在IBM Watson,Microsoft Azure和Cognitive Class上,我已经能够使用sqlalchemy连接到db2数据库。问题是使用kaggle笔记本时我无法连接。由于我想将所有笔记本都安装在kaggle上,因此我想修复此问题。

这是我得到的错误:

SQLAlchemy格式所需的连接信息,例如:
postgresql://用户名:密码@主机名/ dbname或现有连接:
dict_keys([])无法加载插件:sqlalchemy.dialects:ibm_db_sa SQLAlchemy格式所需的连接信息,例如:postgresql:// username:password @ hostname / dbname或现有连接:dict_keys([])

这些是我正在使用的凭据:

%sql ibm_db_sa://user:pswd@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB

已安装相关软件包:

ibm-db 3.0.1
ibm-db-sa 0.3.5
SQLAlchemy 1.3.16

!jupyter --version

jupyter核心:4.6.3
jupyter-notebook:5.5.0
qtconsole:4.7.3
ipython:7.13.0
ipykernel:5.1.1
jupyter客户:6.1.3
jupyter实验室:1.2.10
nbconvert:5.6.1
ipywidgets:7.5.1
nbformat:5.0.6
特质:4.3.3

sys.version

3.7.6 |由conda-forge打包| (默认值,2020年3月23日,23:03:20) [GCC 7.3.0]

%Sql Magic模块:

ipython-sql:0.3.9
pandasql:0.7.3
SQLAlchemy:1.3.16
sqlparse:0.3.1

操作系统详细信息:

Windows 10 Home
1909版
安装在19/12/19
操作系统内部版本18363.836

是的,我可以在Kaggle上的Jupyter笔记本中使用ibm_db.connect()进行连接,并且可以从那里以及通过控制台运行SQL查询,但是我不知道如何在kaggle之外访问python笔记本,它们在云中。我没有安装python或jupyter笔记本的本地版本。

我尝试了以下操作:

import sqlalchemy`
engine = sqlalchemy.create_engine('ibm_db_sa://user:pswd@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB')

然后出现以下错误:

NoSuchModuleError:无法加载插件:sqlalchemy.dialects:ibm_db_sa

但是已加载sqlalchemy和相关模块(请参见上文。)

操作系统名称:

os.name返回posix。


有一个“ +”号,但与我用来连接到IBM Watson,Microsoft Azure和认知类的密码相同,没有问题。


!pip show ibm_db返回以下内容:

名称:ibm-db
版本:3.0.1
摘要:适用于DB2(LUW,zOS,i5)和IDS的Python DBI驱动程序
主页:http://pypi.python.org/pypi/ibm_db/
作者:IBM应用程序开发团队
作者电子邮件:opendev@us.ibm.com
许可证:Apache License 2.0
位置:/opt/conda/lib/python3.7/site-packages
要求:
必填者:ibm-db-sa


!pip show ibm_db_sa返回以下内容:

名称:ibm-db-sa
版本:0.3.5
摘要:SQLAlchemy对IBM数据服务器的支持
主页:http://pypi.python.org/pypi/ibm_db_sa/
作者:IBM应用程序开发团队
作者电子邮件:opendev@us.ibm.com
许可证:Apache License 2.0
位置:/opt/conda/lib/python3.7/site-packages
要求:ibm-db,sqlalchemy
必填者:


!conda list的结果包括以下内容:

ibm-db 3.0.1 pypi_0 pypi
ibm-db-sa 0.3.5 pypi_0 pypi

!conda show ibm_db返回以下内容:

错误:未知命令“ conda”

!conda show ibm_db_sa返回以下内容:

CommandNotFoundError:没有命令“ conda显示”。


!conda list包括pyodbc 4.0.30 py37he1b5a44_0 conda-forge

from sqlalchemy.dialects import registry成功。

registry.register( 'ibm_db_sa', 'ibm_db_sa', 'ibm_db_sa.ibm_db.DB2Dialect_ibm_db')成功。

但是我仍然无法连接。


所有组件都在云中运行。没有什么是本地的。


作为测试,我能够在kaggle上使用sqlite和简单的内存数据库成功运行sqlalchemy和sql_ext。我使用以下内容创建了一个新的笔记本,并能够在创建示例表和示例数据后运行查询:

%load_ext sql
%sql sqlite://

由于我能够连接到其他笔记本云主机(IBM Watson Studio,Azure,认知类)上的db2,并且能够连接到kaggle上的非db2数据库,因此看来问题出在尝试仅在我使用kaggle上托管的笔记本计算机时仅连接到db2。


在kaggle中使用空白笔记本,我输入以下代码行并得到连接错误:

%load_ext sql

sql扩展名已加载。要重新加载它,请使用: %reload_ext sql

%sql ibm_db_sa://user:pswd@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB

所需的SQLAlchemy格式的连接信息,例如: PostgreSQL://用户名:密码@主机名/数据库名 或现有连接:dict_keys(['sqlite://']) 无法加载插件:sqlalchemy.dialects:ibm_db_sa SQLAlchemy格式所需的连接信息,例如: PostgreSQL://用户名:密码@主机名/数据库名 或现有连接:dict_keys(['sqlite://'])

使用另一个空白笔记本,我输入以下代码行,并且可以成功连接到sqlite内存数据库:

%load_ext sql

sql扩展名已加载。要重新加载它,请使用: %reload_ext sql

%sql sqlite://

“已连接:@无”

然后使用sqlite,可以执行查询。

1 个答案:

答案 0 :(得分:0)

这时,当尝试使用sqlalchemy连接到db2数据库时,Kaggle上似乎存在环境问题。在Jupyterlab,IBM Watson,Microsoft Azure和Cognitive Class上本地使用笔记本时,不存在此问题。因此,在这一点上,我认为这个问题已经解决。感谢@mao的所有努力。