fast_executemany = True throwing DBAPIError: Ошибка последовательности функций в sqlalchemy версии 1.3.5 - PullRequest
0 голосов
/ 04 июля 2019

Начиная с SQLAlchemy 1.3.0, выпущенного 2019-03-04,

sqlalchemy теперь поддерживает engine = create_engine(sqlalchemy_url, fast_executemany=True) для диалекта mssql+pyodbc.Т.е.

больше не нужно определять функцию и использовать

@event.listens_for(engine, 'before_cursor_execute'). 

Однако, когда я пытаюсь записать простой тестовый фрейм данных в mssql , возвращается ошибка:

DBAPIError: (pyodbc.Error) ('HY010', '[HY010] [Microsoft] [Драйвер ODBC 17 для SQL Server] Ошибка последовательности функций (0) (SQLParamData)') [SQL: INSERT INTO fast_executemany_test ([Дата], [A], [B], [C], [D]) ЗНАЧЕНИЯ (?,?,?,?,?)] [Параметры: ((datetime.datetime (2018, 1, 3, 0, 0), 2.0, 1.0, 1.0, «Джо»), (datetime.datetime (2018, 1, 4, 0, 0), 2.0, 1.0, 2.0, «Джо»), (datetime.datetime(2018, 1, 5, 0, 0), 2.0, 3.0, 1.0, «Пит»), (datetime.datetime (2018, 1, 6, 0, 0), 2.0, 1.0, 5.0, «Мэри»))] (Справочная информация об этой ошибке: http://sqlalche.me/e/dbapi)

Я просмотрел документацию, но не смог найти, что я делаю не так.

import sqlalchemy
import pandas as pd

DataFrame contains datetime, float, float, float, string. 

test_columns = ['Date', 'A', 'B', 'C', 'D']
test_data = [
    [datetime(2018, 1, 3), 2.0, 1.0, 1.0, 'Joe'],
    [datetime(2018, 1, 4), 2.0, 1.0, 2.0, 'Joe'],
    [datetime(2018, 1, 5), 2.0, 3.0, 1.0, 'Pete'],
    [datetime(2018, 1, 6), 2.0, 1.0, 5.0, 'Mary'],
]

I am establishing connection as:

sqlUrl='mssql+pyodbc://ID:PASSWORD' + 'SERVER_ADDRESS' + '/' + 'DBName' + '?driver=ODBC+Driver+17+for+SQL+Server'

sqlcon = sqlalchemy.create_engine(sqlUrl,fast_executemany=True)

if sqlcon:
    test_data.to_sql('FastTable_test', sqlcon, if_exists='replace',index=False)
    print('Successfully written!')

It creates the table but due to error does not write any data into it.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...