IBM DB2的Python驱动程序不起作用

时间:2016-05-22 09:27:10

标签: python db2

我尝试执行一个非常简单的sql语句,该语句在DB2中设置隔离级别。我是这样做的:

>>> import ibm_db
>>> cnx = ibm_db.connect("sample", "root", "root")
>>> sql = "CHANGE ISOLATION TO CS"
>>> query_stmt = ibm_db.prepare(cnx, sql)
>>> ibm_db.execute(query_stmt)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception

我也试过这个:

>>> stmt = ibm_db.exec_immediate(cnx, sql)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception

我从this官方教程中设置隔离级别的查询。那么,这有什么问题,我该如何解决呢?

修改

我也尝试过其他简单的查询。并且它们都不起作用:

>>> ibm_db.exec_immediate(cnx, "LIST TABLES")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception

好像我缺少一些配置,但我不知道如何检查它以及如何调试它。需要帮助。

修改

我在DB2 CLP尝试了这个:

db2 => set schema sample

收到此错误消息:

  

SQL1024N数据库连接不存在。 SQLSTATE = 08003

然而,当我这样做时:

db2 => LIST DATABASE DIRECTORY

我明白了:

...
database alias   SAMPLE
database name    SAMPLE
...

那么,到底是怎么回事? PS。如果重要的话,我正在使用Windows 10。

修改

好吧,我设法在命令行中连接到示例数据库,甚至列出了所有表。但是,我不能在Python中做同样的事情。我甚至尝试过其他简单的查询,例如select * from act - 在控制台中我得到了很多行,但在Python中我仍然得到了这个Exception

PROOF

这是一个证据:

enter image description here

正如您在第一个屏幕上看到的,一切正常。但是,根据第二个屏幕,同样的东西在Python中不起作用。

enter image description here

2 个答案:

答案 0 :(得分:0)

1)首先进行一些愚蠢的检查:数据库服务器是否正在运行并接受连接。您是否检查过是否能够从命令提示符sql工具连接并创建表和列表表。

2)从https://pypi.python.org/pypi/ibm_db/下载ibm_db驱动程序源代码,其中包含一些测试文件夹。 将您的连接设置与下载的测试文件夹中的config.py进行比较。

用于解决基本连接问题。

您引用的官方教程说&#34;使用类型2连接允许隔离更改,&#34;。我不确定ibm_db是否是类型2驱动程序。我刚下载的源代码中的README没有显示与驱动程序类型相关的任何内容。

问候 -Manas

答案 1 :(得分:0)

DB2 CLP命令不是SQL语句;它们只能由CLP本身解释。查看SQL reference以获取正确的语句语法。例如,要设置会话隔离级别,您将使用语句set current isolation cs