我尝试在工作时从Analysis Service服务器执行微小的mdx查询。 服务器通过ms ole db而不是odbc规范提供数据,这就是我使用adodbapi库的原因。
这是我用来获取查询执行结果的函数:
def mdx_query (query):
conn = adodbapi.connect("PROVIDER=MSOLAP; \
persist security info=true; \
Data Source=***; \
initial catalog=analyse;")
cursor = conn.cursor()
try:
cursor.execute(query)
result = cursor.fetchone()
except (adodbapi.Error, adodbapi.Warning) as e:
print(e)
cursor.close()
del cursor
conn.close()
del conn
return result
原始单值查询非常有效:
select
[Physical Stock PCS] on 0,
[Goods].[Categories].[ALL] on 1
from [analyse]
如果我遇到语法错误,它也只是给我adodbapi.Error消息,它很好。
但是如果我尝试执行更复杂的查询,例如:
select
[Physical Stock PCS] on 0,
[Goods].[Categories].[Level 01] on 1
from [analyse]
[商品]。[类别]。[等级01]有多个维度,无论如何我总是得到python.exe APPCRASH消息。
我尝试了python 2和3,在jupyter和console模式下运行,pandas.read_sql_query方法。结果总是一样的 - 我得到APPCRASH窗口。
如何治愈崩溃并最终执行复杂的查询? 任何帮助表示赞赏!
UPD:此处的错误窗口。无法将其更改为EN。Appcrash error