问题陈述:将存储在.sdf文件中的数据提取到python。系统配置: Win 10 Pro 64位,python 3.5.2-64位,adod浸i库,SQL 3.5
我对编程相当陌生,我已经把Python作为我学习的第一种语言。目前,我在连接SQLCE3.5 .sdf文件的过程中遇到了麻烦。
我用过阿多巴米图书馆。在过去的一周里,我已经在网上进行了广泛的搜索,以找到解决这个问题的方法,并确保我的连接字符串是正确的。我尝试过在堆栈溢出和https://www.connectionstrings.com/microsoft-sqlserver-ce-oledb-3-5/上提供多个选项/解决方案。
代码:
import adodbapi
cons_str = "Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.5;" \
"Data Source=D:\Work\Programming\Python\SQL_DataTransfer\LF.sdf;"\
"Persist Security Info=False;" \
"SSCE:Max Database Size=4091"
connection = adodbapi.connect(cons_str)
print(connection)错误信息:
回溯(最近一次调用):
文件"D:\Work\Programs\Python35.virtualenvs\sql_output\lib\site-packages\adodbapi\adodbapi.py",第93行,在make_COM_connecter c= Dispatch('ADODB.Connection') #connect中,在CoIninialize v2.1.1 adamvan NameError之后:未定义名称'Dispatch‘
在处理上述异常的过程中,发生了另一个异常:
回溯(最近一次调用):
文件"D:\Work\Programs\Python35.virtualenvs\sql_output\lib\site-packages\adodbapi\adodbapi.py",第112行,在连接co.connect(kwargs)文件"D:\Work\Programs\Python35.virtualenvs\sql_output\lib\site-packages\adodbapi\adodbapi.py",行269中,在连接self.connector = connection_maker()文件"D:\Work\Programs\Python35.virtualenvs\sql_output\lib\site-packages\adodbapi\adodbapi.py",行95中在make_COM_connecter api.InterfaceError中("Windows错误:调度(‘ADODB.Connection’)失败“)。adodbapi.apibase.InterfaceError: Windows错误:调度(‘ADODB.Connection’)失败。
在处理上述异常的过程中,发生了另一个异常:
回溯(最近一次调用):
文件"D:/Work/Programming/Python/SQL_DataTransfer/SQL_CE_reportDB.py",第8行,在connection = adodbapi.connect(cons_str) File "D:\Work\Programs\Python35.virtualenvs\sql_output\lib\site-packages\adodbapi\adodbapi.py",第116行中,在连接引发api.OperationalError(e,message) adodbapi.apibase.OperationalError:(InterfaceError("Windows错误:调度(‘ADODB.Connection’)失败“)中。错误打开到"Provoider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.5;的连接数据安全Source=D:\Work\Programming\Python\SQL_DataTransfer\LF.sdf;Persist Info=False;SSCE:Max数据库Size=4091"')
在这一点上,任何帮助都是非常感谢的。
谢谢,真的,JD。
发布于 2017-02-01 07:19:57
看上去你有个错误:
Provoider => Provider发布于 2019-02-06 12:00:23
版本= '2.6.0.6‘取决于要安装在您的pypiwin32环境中的pypiwin32。对于adodbapi.py,从第51行:
if api.onIronPython:
from System import Activator, Type, DBNull, DateTime, Array, Byte
from System import Decimal as SystemDecimal
from clr import Reference
def Dispatch(dispatch):
type = Type.GetTypeFromProgID(dispatch)
return Activator.CreateInstance(type)
def getIndexedValue(obj,index):
return obj.Item[index]
else: # try pywin32
try:
import win32com.client
import pythoncom
import pywintypes
onWin32 = True
def Dispatch(dispatch):
return win32com.client.Dispatch(dispatch)
except ImportError:
import warnings
warnings.warn("pywin32 package (or IronPython) required for adodbapi.",ImportWarning)
def getIndexedValue(obj,index):
return obj(index)在我的情况下,我跟踪了这样一个事实,即调度函数没有定义,因为在第62行(导入ImportError )处生成了一个在but块中捕获的win32com.client异常,但是由于某种原因,警告消息没有显示在我的控制台中。
尝试:
pip install pypiwin32并且不应该再引发上面描述的ImportError异常。
https://stackoverflow.com/questions/41968802
复制相似问题