Неправильный синтаксис рядом с «CAST» при использовании pandas.to_sqlPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Неправильный синтаксис рядом с «CAST» при использовании pandas.to_sql

Сообщение Anonymous »

Я пытаюсь написать код для обновления таблицы sql на основе значений в кадре данных pandas. Для этого я использую следующий код:

Код: Выделить всё

df.to_sql(name='streamlit_test', con=engine, schema='dbo', if_exists='replace', index=False)
Использование движка sqlalchemy. Однако я получаю сообщение об ошибке:

Код: Выделить всё

ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near 'CAST'. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")
[SQL: SELECT cast(com.value as nvarchar(max)) FROM fn_listextendedproperty('MS_Description', 'schema', CAST(? AS NVARCHAR(max)), 'table', CAST(? AS NVARCHAR(max)), NULL, NULL ) as com; ]
[parameters: ('dbo', 'streamlit_test')]
Я подумал, что это может быть связано с типами данных, поэтому я попытался изменить типы данных моего фрейма данных, чтобы они соответствовали соответствующим типам данных в таблице, в которую я пытаюсь записать (используя этот поиск: https://learn.microsoft.com/en-us/sql/m ... rver-ver16), но я все еще получение та же ошибка. Мне не удалось найти кого-либо еще с подобной проблемой в Google, поэтому я буду очень признателен за любую помощь/подсказки!
Редактировать
Я' Я пробовал использовать:

Код: Выделить всё

from sqlalchemy.dialects.mssql import BIGINT, FLOAT, TEXT, BIT
df.to_sql(name='streamlit_test', con=engine, schema='dbo',
if_exists='replace', index=False,
dtype={'col1':BIGINT, 'col2':FLOAT, 'col3':TEXT,
'Tickbox':BIT, 'Comment':TEXT})
чтобы типы dtypes соответствовали тем, которые они есть в созданной таблице, но я все равно получаю ту же ошибку. Для большего контекста to_sql работает нормально и сохраняет фрейм данных в таблицу, если таблица еще не существует, и если я изменю if_exists='replace' на if_exists='append' , это тоже работает, но при попытке заменить данные в существующей таблице я получаю ошибку 42000.
Моя версия MSSMS: Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) — 10.50.6560.0 (X64) 28 декабря 2017 г. 15:03:48 Авторские права (c) Microsoft Corporation Enterprise Edition (64-разрядная версия) в Windows NT 6.1 (сборка 7601: пакет обновления 1) ) (Гипервизор)

Подробнее здесь: https://stackoverflow.com/questions/792 ... das-to-sql
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»