pandas to_ sql синтаксическая ошибка с SQLAlchemy и Sybase - PullRequest
1 голос
/ 05 августа 2020

Сейчас я борюсь с функцией to_ sql в pandas при создании и вставке данных в новую таблицу.

Вот код:

import pandas as pd
import sqlalchemy
import urllib

params=urllib.parse.quote_plus("Driver=Adaptive Server Enterprise;SERVER=xxx.div.com;DATABASE=MYDB;USER=DIV;Pass=XXX;PORT=12345)
table_name="tab2"
engine = create_engine("sybase+pyodbc:///?odbc_connect=%s" %params,echo=True)

query = "Select Col1,Col2,Col3 from tabA"

df=pd.real_sql_query(query,con=engine)

df.to_sql(table_name,engine,if_exists='replace',schema=dbo)

Следующее генерирует оператор создания вроде: Create table dbo. "tabB" ("col1" BIGINT NULL, "col2" BIGINT NULL, "col3" BIGINT NULL)

, а затем ошибки с sqlalchemy.ex c .Programmingerror: (pyodb c .Programmingerror) Неправильный синтаксис рядом с '(' \ n

Значение по умолчанию '"' (сгенерировано дважды) вызывает проблему. Поскольку оператор SQL выдает ту же ошибку при выполнении этого на ASEI Sql.

Любой обходной путь для этого был бы полезен.

Заранее спасибо за вашу помощь.

Примечание Создание движка выполнено успешно .

1 Ответ

1 голос
/ 06 августа 2020

Я могу воспроизвести вашу проблему, используя внутренний диалект sybase в SQLAlchemy 1.3.18. Этот внутренний диалект

  • не поддерживается,
  • скоро будет официально объявлен устаревшим, а
  • будет удален из следующих выпусков.

Я также подтвердил, что внешний диалект SAP ASE (Sybase) правильно отображает DDL.

...