Сбои панд to_sql после обновления панд - PullRequest
0 голосов
/ 02 июня 2018

Недавно я обновил pandas с .20 до .23, и теперь сценарий, который вставляет DataFrame pandas в sql (MS SQL Server), не работает.Фрейм такой же, как и всегда (он читается из sql с использованием pandas read_sql_table, а затем просто записывается обратно, исключительно в качестве теста, чтобы убедиться, что все работает).Я не менял никаких драйверов, например, odbc, и я протестировал несколько драйверов, которые работали на меня до обновления.После сбоя я обновил sqlalchemy, но это не помогло.

Я получаю эту ошибку:

(pyodbc.ProgrammingError) ('The SQL contains 6039 parameter markers, but 137111 parameters were supplied', 'HY000')   [SQL: 'INSERT INTO dbo.test_python_drop_write_append (various column names here) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?, ?, ?, ?,

Существуют фактические значения данных в кадре ниже, но я их не включилВот.Знаки вопроса выглядят странно, и я не могу их объяснить.Когда я печатаю заголовок фрейма данных, он выглядит просто отлично, и, как я уже сказал, это тот же самый фрейм данных, который pandas ранее успешно читал и переписывал в sql в этом тестовом скрипте.Я даже не знаю, что такое маркер параметра, и я не пытаюсь явно указать что-либо связанное с ними.

Код написания такой: он использует тот же объект sqlcon, который успешно читает данные:

dataf.to_sql(name=tablename, con=sqlcon, schema=schemaname, index=False, if_exists='replace')

Я надеюсь, что редактирование может привлечь меня больше внимания, и у меня есть еще немного информации.Я пытался просмотреть код SQL алхимии безрезультатно.Я пытался выяснить, как именно создается оператор "insert (columns) values ​​()".Это не сработало, но я заметил, что все значения выглядят так (?,?,?,?, ...?,?), Но затем все фактические значения передаются в качестве параметров.Итак, оператор sql выглядит следующим образом:

     [SQL: 'INSERT INTO [dbname].[schemaname].[tablename] ([var1], [var2], [var3], [var4], [var5], [var6]) VALUES (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?),
(?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?)'] [parameters: (actualdata1, actualdata2, etc.)]

Фактические данные не разделены () на строку данных.Во всяком случае, любая помощь в том, как это исправить, будет принята с благодарностью.Некоторые изменения в пандах с 0,20 до 0,23 сделали это возможным.У моих данных есть несколько имен столбцов в виде чисел, а некоторые столбцы заполнены пандами. Нет.

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