Автокоммит приводит к сбою панд to_sql - PullRequest
0 голосов
/ 29 мая 2019

У меня проблема с параметрами двигателя:

    import pyodbc
    import pandas as pd
    from sqlalchemy import create_engine
    import urllib


    conn_str = (
        r'Driver=ODBC Driver 11 for SQL Server;'
        r'Server=Saturn;'
        r'Database=ExperienceRating2019;'
        r'Trusted_Connection=yes;'
    )
    quoted_conn_str = urllib.parse.quote_plus(conn_str)
    engine = create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted_conn_str)).execution_options(autocommit=True)
    cnxn = engine.connect()

    splitpoint = 17000
    excel_file = "#2 DRATIO RUN.xlsx"
    d_ratio_sheet = "D RATIO & ELR"

    d_ratio = pd.read_excel(open(excel_file,'rb'),sheet_name = d_ratio_sheet)
    d_ratio.to_sql("d_ratio", cnxn, if_exists = 'replace')

Я получу следующую ошибку:

DBAPIError: (pyodbc.Error) ('HY010', '[HY010] [Microsoft] [Драйвер ODBC 11 для SQL Server] Ошибка последовательности функций (0) (SQLFetch)') (Справочная информация об этой ошибке по адресу: http://sqlalche.me/e/dbapi)

Если я поменяю двигатель, чтобы потерять автокоммит

    engine = create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted_conn_str))

Ошибка исчезает (ура!), Но позже в моем коде, где я выполняю SP, он больше не будет фиксироваться:

    engine.execute("sp_refresh_inputs")

** Вопрос: ** Как я могу изменить свое соединение, чтобы работали как панды, так и sqlalchemy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...