0

我正在尝试从工作中的分析服务服务器执行微小的 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。应用程序崩溃错误

4

0 回答 0