2017-09-01 174 views
0

我需要通過pyodbod驅動程序通過python自動執行一些IBM DB 2命令。我已經通過DB2 ODBC Driver成功連接到數據庫,並且可以運行SELECT,INSERT,CREATE TABLE命令。我需要如下運行諸如db2levellist node directory show detail等命令被表示異常:無法從pyodbc運行db2命令

pyodbc.ProgrammingError: ('42601', '[42601] [IBM][CLI Driver][DB2/LINUXX8664] SQL0104N An unexpected token "END-OF-STATEMENT" was found following "db2level". Expected tokens may include: "JOIN <joined_table>". SQLSTATE=42601\n (-104) (SQLExecDirectW)') 

這是我的python pyodbc代碼:

import pyodbc 

cnx = pyodbc.connect(
    'Driver={DB2}; ' 
    'Hostname=192.168.0.185; ' 
    'Port=50005; ' 
    'Protocol=TCPIP; ' 
    'Database=ABC; ' 
    'CurrentSchema=db2inst8; ' 
    'UID=db2inst8; ' 
    'PWD=12345;' 
    ) 
cursor = cnx.cursor() 
cursor.execute("db2level") 
+0

'db2level'是一個獨立的程序; 'list node directory'是一個DB2 CLP命令。顯然,你不能通過SQL接口執行。 – mustaccio

回答

1

的 'db2level' 是外部程序,它不是SQL,你不能通過pyodbc調用它。您可以像調用任何外部命令一樣調用命令db2level(只要它位於相同的主機名上)。

如果您想使用SQL查找DB2服務器的DB2版本/修訂包,則可以連接到數據庫並使用db2提供的視圖/函數。