2016-04-08 128 views
1

我试图从SQL Server CE数据库(.sdf文件格式)中将表加载到Python(3.5.1)中。这是我一直在玩弄什么:加载,通过Python查询SQL Server CE 4.0数据库文件

import adodbapi 
file="C:\\TS\\20160406_sdfPyt\\HC.sdf" 
connstr = 'Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=%s;' %file 
conn = adodbapi.connect(connstr) 

此抛出了错误信息

Traceback (most recent call last): 
File "C:\Users\TS\AppData\Local\Programs\Python\Python35\lib\site-packages\adodbapi\adodbapi.py", line 112, in connect 
co.connect(kwargs) 
File "C:\Users\TS\AppData\Local\Programs\Python\Python35\lib\site-packages\adodbapi\adodbapi.py", line 274, in connect 
self.connector.Open() # Open the ADO connection 
File "<COMObject ADODB.Connection>", line 3, in Open 
File "C:\Users\TS\AppData\Local\Programs\Python\Python35\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_ 
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args) 
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft OLE DB Service Components', 'Format of the initialization string does not conform to the OLE DB specification.', None, 0, -2147217805), None) 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
File "<pyshell#32>", line 1, in <module> 
conn = adodbapi.connect(connstr) 
File "C:\Users\TS\AppData\Local\Programs\Python\Python35\lib\site-packages\adodbapi\adodbapi.py", line 116, in connect 
raise api.OperationalError(e, message) 
adodbapi.apibase.OperationalError: (com_error(-2147352567, 'Exception occurred.', (0, 'Microsoft OLE DB Service Components', 'Format of the initialization string does not conform to the OLE DB specification.', None, 0, -2147217805), None), 'Error opening connection to "Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source==C:\\TSrinivas\\20160406_sdfPyt\\HC.sdf;"') 

我试着包括

SSCE:Max Database Size=3999;Persist Security Info=True; 

等连接字符串中的在线但搜索后没有运气。有人可以帮我用正确的连接字符串,或者如果我在这里做了其他任何错误?

编辑:在connstr

+0

没有一个Python专家,但为什么你有:数据源==而不是数据源=? – ErikEJ

+0

我尝试了==和=(仍然学习Python,我在R中完成了大部分工作,并且只使用python来读取这个sdf文件)。编辑我的帖子。 – tvns

+0

我一直在使用pyodbc没有任何错误。 –

回答

0

我从https://www.microsoft.com/en-us/download/details.aspx?id=5783 重新安装的SQL Server CE 3.5(第一x86和x64的,然后),并改变了连接字符串

connstr = """Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=C:\\TSrinivas\\20160406_sdfPyt\\HazardCache.sdf;""" 

改变 '==' 到 '='这适用于4.0数据库!我早些时候尝试过,但它没有奏效,但不知何故重新安装完成了这项工作。我用adodbapi。