【问题标题】:Sqlalchemy won't load for Kaggle notebooksSqlalchemy 不会为 Kaggle 笔记本加载
【发布时间】:2020-06-05 00:59:24
【问题描述】:

我已经能够使用 sqlalchemy 为 IBM Watson、Microsoft Azure 和 Cognitive Class 上的笔记本连接到 db2 数据库。问题是我在使用我的 kaggle 笔记本时无法连接。因为我想把我所有的笔记本都放在 kaggle 上,所以我想解决这个问题。

这是我得到的错误:

需要 SQLAlchemy 格式的连接信息,例如:
postgresql://username:password@hostname/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笔记本: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
nb 格式:5.0.6
特质:4.3.3

sys.version

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

%Sql 魔法模块:

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

操作系统详情:

Windows 10 家庭版
1909 版
安装于 2019 年 6 月 12 日
操作系统内部版本 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 和 Cognitive Class 的密码相同。


!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 许可证 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 许可证 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 show”。


!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、Cognitive Class)上的 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://username:password@hostname/dbname 或现有连接:dict_keys(['sqlite://']) 无法加载插件:sqlalchemy.dialects:ibm_db_sa SQLAlchemy 格式所需的连接信息,例如: postgresql://username:password@hostname/dbname 或现有连接:dict_keys(['sqlite://'])

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

%load_ext sql

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

%sql sqlite://

'已连接:@None'

使用 sqlite,我可以执行查询。

【问题讨论】:

  • 请不要发布文字图片。
  • 应该的。我没有看到任何相反的文件。我可以导入 ibm-db 3.0.1、ibm-db-sa 0.3.5,但我似乎无法让它们工作。我能够让 sqlite 与内存数据库一起工作。见帖子。
  • 没错。我可以在 kaggle notebook 中使用 ibm_db 访问 db2,但使用 ibm_db_sa 无法访问它。
  • 仅供参考。 RHEL 7.8,anaconda 4.8.3,python 3.7.6 with jupyter notebook,import sqlalchemyimport ibm_db_sa 运行成功,%load_ext sql 工作,%env DATABASE_URL=ibm_db_sa://user:passwd@host:port/dbname 然后%sql select... 对我来说都正常工作。这是本地的一切(我知道一切都是基于云的,但我正在努力简化以取得进展)。你能在空白的 kaggle 笔记本上确认你遵循的确切步骤吗?
  • 查看帖子以获取更新。顺便说一句,IBM 云支持表示这是 kaggle 的问题,因为在尝试连接之前导入失败。

标签: python sqlalchemy db2 kaggle


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-10-23
    • 2021-04-15
    • 2021-04-18
    • 2020-08-22
    • 2022-01-24
    • 2021-04-03
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多