python - 从 IronPython Access MS Access 时出现问题

标签 python ms-access odbc ironpython spotfire

我正在尝试使用 Spotfire 中的 IronPython 在 MS Access 中运行脚本。到目前为止,我什至无法连接到 MS Access。

这是我的连接代码:

import clr
import System
clr.AddReference("System.Data")

from System.Data import DataSet
from System.Data.Odbc import OdbcConnection, OdbcDataAdapter

connectString = (
    "Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
    "Dbq=\\\olgwfap1\Data\Development Division\Res Surv Eng\Personal Folders\Pruet\Data Team\SPOTFIRE\TIDELANDS\Tidelands_Spotifre.accdb;"
    "Uid=Admin;PWd=;"
)

query = "Select * From FOP_Calc"


connection = OdbcConnection(connectString)
adaptor = OdbcDataAdapter(query, connection)
dataSet = DataSet()
connection.Open()
adaptor.Fill(dataSet)
connection.Close()

执行此操作时,出现以下错误:

System.Data.Odbc.OdbcException (0x80131937): ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle) at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.Odbc.OdbcConnection.Open() at stub$296##296(Closure , CallSite , CodeContext , Object ) at Microsoft.Scripting.Actions.MatchCaller.Call2[T0,T1,TRet](Func4 target, CallSite site, Object[] args) at Microsoft.Scripting.Actions.CallSite1.UpdateAndExecute(Object[] args) at Microsoft.Scripting.Actions.UpdateDelegates.Update2[T,T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) at $287##287(Closure , Scope , LanguageContext ) at Spotfire.Dxp.Application.ScriptSupport.IronPythonScriptEngine.ExecuteForDebugging(String scriptCode, Dictionary2 scope, Stream outputStream) at Spotfire.Dxp.Application.Scripting.ScriptService.ExecuteForDebugging(String scriptCode, Dictionary2 scope, Stream outputStream) at Spotfire.Dxp.Application.Scripting.ScriptManager.<>c__DisplayClass14.b__f() at Spotfire.Dxp.Framework.Commands.CommandHistory.Transaction(Executor executor, Boolean visible, Boolean sticky, Guid stickyGuid) at Spotfire.Dxp.Framework.Commands.CommandHistory.Transaction(String displayName, Executor executor) at Spotfire.Dxp.Framework.DocumentModel.DocumentNode.Transaction(String displayName, Executor executor) at Spotfire.Dxp.Application.Scripting.ScriptManager.ExecuteScriptForDebugging(String scriptCode, Dictionary`2 scriptArguments, String& output) at Spotfire.Dxp.Forms.Framework.Scripting.ScriptEditDialog.RunButton_Click(Object sender, EventArgs e)

文件名绝对正确,因此我假设它是默认驱动程序给它带来了麻烦。

如果有什么区别的话,我的 SpotFire(托管 IronPython)是 64 位安装,而我使用的是 MSOffice 32 位(不过我确实安装了 64 位和 32 位 MS Access ODBC 驱动程序)。

感谢任何帮助, 谢谢。

最佳答案

如果您的 IronPython 脚本在 64 位环境中运行,那么您需要安装 64 位版本的 Access 数据库引擎。或者相反,如果您安装了 32 位版本的 Access 数据库引擎(因为您有 32 位 Office),则您的 IronPython 脚本需要在 32 位环境中运行。

可以强制将 32 位和 64 位版本的 Access 数据库引擎驻留在同一台计算机上,但不建议这样做。它可能会导致 Office 出现问题,并且不是受支持的配置。

关于python - 从 IronPython Access MS Access 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752161/

相关文章:

python - Airflow 中 DAG 配置文件的建议方式是什么

python - 使用空 numpy 数组创建 defaultdict

ms-access - 如何编写脚本来查找并更正表中的无效条目

database - 在 Access 2003 中根据另一个字段将数据放入一个表单字段中

mysql - 使用 SHA2 连接到 MySQL

Python:无法从不同模块/函数访问类属性

python - BeautifulSoup 将 HTML 解析为字典,其中 <h> 是键,<p> 是值

使用数组从 Access 求和的 PHP 总和

c# - OdbcParameter 错误 - varchar(MAX) 输出参数的大小为 0

delphi - 将 ODBC 数据源与 Delphi 2006+ 连接的正确方法?