我正在尝试编写一个Python脚本,以便使用pyodbc在Microsoft Access中执行保存的查询。我连接到数据库并检索光标。如果我跑:
>>> database_cursor = get_cursor("path_to_database.accdb") #This is a function I wrote that returns the cursor
>>> database_cursor.tables()
我可以看到保存的查询在那里并且是VIEW类型。将它干扰成一个namedtuple,它看起来像这样:
table(catalog='.\\path_to_database.ACCDB', schema=None, name='QueryIWantToExecute', type='VIEW', remarks=None)
如果我在Microsoft Access中打开保存的查询并从SQL视图中复制粘贴此查询并运行.execute()函数,它确实会返回我的查询结果。
>>> database_cursor.execute("SQL copy-pasted from Access here")
#This works and returns the results I want
是否可以以某种方式从我的Python脚本访问SQL?在我返回的表上运行.statistics()方法会产生以下错误:
>>> database_cursor.statistics('QueryIWantToExecute')
...some output ommitted...
pypyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC Microsoft Access Driver] Query support unavailable.')
.columns()函数确实从这个表中返回了一些列,但是我没有看到这是如何让我从我的脚本运行查询的。
>>> database_cursor.columns('QueryIWantToExecute')
[('.\\path_to_database.accdb', None, 'QueryIWantToExecute', 'cause', -9, 'VARCHAR', 20, 40, None, None, 1, None, None, -9, None, 40, 1, 'YES', 1),
('.\\path_to_database.accdb', None, 'QueryIWantToExecute', 'CountOfThings', 4, 'INTEGER', 10, 4, 0, 10, 1, None, None, 4, None, None, 2, 'YES', 2)]
在这里咨询pyodbc游标文档(https://github.com/mkleehammer/pyodbc/wiki/Cursor),我只看到在你拥有SQL后执行查询的方法。如何从Access中提取SQL?