我尝试执行一个非常简单的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
这是一个证据:
正如您在第一个屏幕上看到的,一切正常。但是,根据第二个屏幕,同样的东西在Python中不起作用。
答案 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
。