Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在使用sqlalchemy和sybase时,如何防止pandas dataframe在tmp周围添加双引号?_Python_Dataframe_Sqlalchemy_Sybase_Temp Tables - Fatal编程技术网

Python 在使用sqlalchemy和sybase时,如何防止pandas dataframe在tmp周围添加双引号?

Python 在使用sqlalchemy和sybase时,如何防止pandas dataframe在tmp周围添加双引号?,python,dataframe,sqlalchemy,sybase,temp-tables,Python,Dataframe,Sqlalchemy,Sybase,Temp Tables,在使用sqlalchemy作为池框架处理sybase时,我已经将问题简化为pandas to_sql,在tmp周围添加了双引号 代码: 错误: 当我删除tmp周围的双引号时,它在sybase中运行良好。 同样,这段代码在SqlServer中运行良好,无需任何修改 你知道如何解决这个问题吗? 我也欢迎其他建议。 请注意,我确实有一个绕过数据帧并逐行插入的解决方案,但我更喜欢使用数据帧的好东西(如批处理、批插入等)的解决方案。此错误已在外部sybase方言中修复 具体地 我已经复制了你的问题,并打开

在使用sqlalchemy作为池框架处理sybase时,我已经将问题简化为pandas to_sql,在tmp周围添加了双引号

代码:

错误:

当我删除tmp周围的双引号时,它在sybase中运行良好。 同样,这段代码在SqlServer中运行良好,无需任何修改

你知道如何解决这个问题吗? 我也欢迎其他建议。
请注意,我确实有一个绕过数据帧并逐行插入的解决方案,但我更喜欢使用数据帧的好东西(如批处理、批插入等)的解决方案。

此错误已在外部sybase方言中修复

具体地


我已经复制了你的问题,并打开了一张外部方言的票证。嘿,谢谢你复制它并记录这个问题。好的,我会将你的答案标记为接受,一旦我检查出来-希望在周五之前-我必须通过这个来提交一些代码来依赖它,但是,我确实希望简化用于_sqlGord的代码-您能检查一下吗-当前生成的sql语句是这样的:从“tmp”中选择别名_id,参数=。这对sybase来说似乎也是不可接受的。我对sql进行了测试,结果成功了,所以我认为我完成了。我将尝试重新生成select.ok,我正在对sql执行操作,对于sybase连接,这是在异常中抛出的sql。看起来你把它从双引号改成了双引号,但可能更进一步,下游的单引号正在被添加。与sqlserver不同,sybase不接受表名周围的单引号或双引号。sqlite需要单引号。我无法用read\u sql\u查询重现您的问题。对我来说很好。请注意,我正在传递一个引擎对象来读取sql查询。
def get_data_with_tmp():
    engine = get_connection("sybase")
    with engine.connect() as conn:
        df = pd.DataFrame({'alias_id': ['345402KP5', '3454014R1']})
        df.to_sql(name='#tmp', con=conn, schema=None, if_exists='append', index=False)
        df = pd.read_sql_query("SELECT alias_id from #tmp", con=conn)
statement = '\nCREATE TABLE "#tmp" (\n\talias_id TEXT NULL\n)\n\n' E   pyodbc.ProgrammingError: ('42000', "[42000] [SAP][ASE ODBC Driver][Adaptive Server Enterprise]Incorrect syntax near '('.\n (102) (SQLExecDirectW)")