【问题标题】:pandas to_sql syntax error with SQLAlchemy and Sybase使用 SQLAlchemy 和 Sybase 的 pandas to_sql 语法错误
【发布时间】:2020-08-05 20:05:28
【问题描述】:

在创建数据并将数据插入新表时,我目前正在努力使用 pandas 中的 to_sql 函数。

代码如下:

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)

下面会生成一个创建语句,如: 创建表 dbo."tabB" ( "col1" BIGINT NULL, "col2" BIGINT NULL, "col3" BIGINT NULL )

然后出现错误 sqlalchemy.exc.Programmingerror : (pyodbc.Programmingerror) '(' 附近的语法不正确\n

默认的 '"'(double generated) 导致了这个问题。因为在 ASEISql 上执行时 SQL 语句会抛出同样的错误。

任何解决此问题的方法都会有所帮助。

提前感谢您的帮助。

注意引擎创建成功。

【问题讨论】:

    标签: python-3.x pandas sqlalchemy sybase sap-ase


    【解决方案1】:

    我能够使用 SQLAlchemy 1.3.18 中的内部“sybase”方言重现您的问题。内部方言是

    • 不支持,
    • 即将被正式弃用,并且
    • 将从未来的版本中删除。

    我还确认external SAP ASE (Sybase) dialect 正确呈现了 DDL。

    【讨论】:

    • 非常感谢您的帮助。
    • 嗨,戈德,我遇到了一些不一致的行为 1) 查询没有提取完整的数据 例如:对 db 的查询返回 30k 条记录,但在这里它有时返回 1k、3k 或最大 10k。 2)即使在明确指定dtype之后,生成的表语句也始终不同。你能在这方面指导正确的方向吗?
    • @Divyaansh - 如果您需要进一步的帮助,请打开 new questions 或 GitHub issues。注意:请将问题/问题限制为单个主题,并包含minimal reproducible example。
    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    相关资源
    最近更新 更多