我正在尝试从工作中的分析服务服务器执行微小的 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]
[Goods].[Categories].[Level 01] 有不止一个维度,无论如何我总是收到 python.exe APPCRASH 消息。
我尝试了 python 2 和 3,在 jupyter 和控制台模式下运行,pandas.read_sql_query 方法。结果总是一样的——我得到了 APPCRASH 窗口。
如何解决崩溃并最终执行复杂的查询?任何帮助表示赞赏!
UPD:这是错误窗口。无法将其更改为 EN。应用程序崩溃错误