python
  • database
  • sql-server-ce
  • connection-string
  • adodbapi
  • 2016-04-08 3 views 1 likes 
    1

    Я пытаюсь загрузить таблицу из базы данных SQL Server CE (.sdf) в Python (3.5.1). Вот то, что я играл с:Загрузка, запрос файлов базы данных SQL Server CE 4.0 через Python

    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; 
    

    и т.д. в строке подключения после поиска в Интернете, но с не повезло. Может ли кто-нибудь помочь мне с правильной строкой соединения, или если я делаю что-то еще неправильно здесь?

    Edit: изменен '==' на '=' в connstr

    +0

    Нет эксперта по python, но почему у вас есть: Источник данных ==, а не Источник данных =? – ErikEJ

    +0

    Я пробовал оба с == и = (все еще изучая Python. Я выполняю большую часть своей работы в R и использую python только для чтения этого sdf-файла). Отредактировал мой пост. – tvns

    +0

    Я использую pyodbc без каких-либо ошибок. –

    ответ

    0

    Я переустановил SQL Server CE 3.5 (первый x86 и x64) затем из https://www.microsoft.com/en-us/download/details.aspx?id=5783 и изменил строку подключения к

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

    Это работает с базой данных 4.0! Я пробовал это раньше, но это не сработало, но как-то переустановка выполнила эту работу. Я использовал adodbapi.

     Смежные вопросы

    • Нет связанных вопросов^_^