我使用pyodbc访问DB2 10.1.0
我有一个名为foobar的登录帐户和一个名称相同的模式。我在架构下有一个名为users的表。
当我以foobar身份登录时,我可以从命令行成功运行以下查询:
select * from users
我有一个小的Python脚本,我用来连接数据库。脚本是:
#!/usr/bin/python
import pyodbc
if __name__ == "__main__":
accessString ="DRIVER={DB2};DATABASE=MYDATABASE;SERVER=localhost;UID=foobar; PWD=foobarish1;CURRENTSCHEMA=FOOBAR"
print accessString
cnxn = pyodbc.connect(accessString , autocommit=True)
cursor = cnxn.cursor()
query = "SELECT * FROM USERS"
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
print 'Row data'
print row[0]
cursor.close()
cnxn.close()
当我运行脚本时,出现以下错误:
(' 42S02',' [42S02] [IBM] [CLI驱动程序] [DB2 / LINUXX8664] SQL0204N" FOOBAR.USERS"是未定义的名称.SQLSTATE = 42704 \ n(-204)(SQLExecDirectW)')
这通常意味着架构尚未定义。但是,如果我将脚本中的查询更改为:
VALUES CURRENT SCHEMA
脚本成功运行并返回
FOOBAR
有谁知道如何解决这个问题,以便查询用户表?非常感谢您的帮助和见解。
编辑:我还尝试将架构直接添加到表名中,进行查询
SELECT * FROM FOOBAR.USERS
我仍然得到同样的错误。
答案 0 :(得分:0)
我遇到了同样的问题,并通过查询显式设置了SCHEMA来解决它:
SET CURRENT SCHEMA foobar