![](/img/trans.png)
[英]IBM DB2 connection from docker through python throwing [IBM][CLI Driver] SQL1598N
[英]Python driver for IBM DB2 does not work
我嘗試執行一個非常簡單的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
我從本官方教程中獲取的設置隔離級別的查詢。 那么,這有什么問題,我該如何解決?
編輯
我也嘗試了其他簡單的查詢。 它們都不起作用:
>>> 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
。
證明
這是一個證明:
如您在第一個屏幕上看到的,一切正常。 但是,根據第二個屏幕,同一件事在Python中不起作用。
1)首先進行一些愚蠢的檢查:DB服務器是否正在運行並接受連接。 您是否檢查過是否能夠從命令提示符sql工具連接並創建表和列表。
2)從https://pypi.python.org/pypi/ibm_db/下載ibm_db驅動程序源代碼,其中包含一些測試文件夾。 將您的連接設置與下載的測試文件夾中的config.py進行比較。
那是為了解決基本的連通性。
您引用的官方教程說:“允許使用類型2連接進行隔離更改”。 我不確定ibm_db是否是2型驅動程序。 我剛剛下載的源中的自述文件未顯示與驅動程序類型相關的任何內容。
問候-瑪納斯
DB2 CLP命令不是SQL語句。 它們只能由CLP自己解釋。 查看SQL參考以獲取正確的語句語法。 例如,要設置會話隔離級別,可以使用語句set current isolation cs
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.