【发布时间】:2021-07-02 18:43:40
【问题描述】:
我正在尝试使用 pyodbc 将 python 连接到具有用户定义函数 (UDF) 的 MS Access 数据库。
数据库中有许多查询,这利用了 UDF。我想在 python 中得到这样一个查询的结果,所以我继续使用 pyodbc。 Table1_Q2 是 Access 数据库中的查询,Arc 是 Access 数据库中的 UDF。
我使用 pyodbc 从 Access DB 中的查询中获取所有值。因此,我在 Python 中使用此 SQL 查询从 Access DB 中的查询 (Table1_Q2) 中选择所有值。我收到以下错误
Execution failed on sql 'SELECT * FROM Table1_Q2': ('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] Undefined function 'Arc' in expression. (-3102) (SQLExecDirectW)")
当我从 Access DB 运行查询时,它似乎工作正常。但是当我使用 Pyodbc 连接时,它无法识别那些利用 UDF 的查询。我可以使用 Pyodbc 访问不依赖于 UDF 的其他表。
这是一个代码sn-p:
filepath = os.path.abspath('')+'\Database1.accdb'
myDataSources = pyodbc.dataSources()
# Establishing connection to Access DB
driver = myDataSources['MS Access Database']
cnxn = pyodbc.connect(driver=driver, dbq = filepath, autocommit=True)
crsr = cnxn.cursor()
table_name = 'Table1_Q2'
query = "SELECT * FROM {}".format(table_name)
source_df2 = pandas.read_sql(query, cnxn)
cnxn.close()
是否需要在代码中添加一些内容以便将 UDF 也包含在 Access DB 中。
【问题讨论】:
标签: python python-3.x ms-access user-defined-functions pyodbc