使用sqlalchemy和sybase时如何防止pandas数据帧在#tmp周围添加双引号?
How to prevent pandas dataframe from adding double quotes around #tmp when using sqlalchemy and sybase?
我已将问题减少到 pandas to_sql 在使用 sqlalchemy 作为池框架处理 sybase 时在 #tmp 周围添加双引号。
Code :
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)
Error:
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)")
当我删除#tmp 周围的双引号时,它在 sybase 中工作正常。
此外,同样的代码无需任何修改即可在 SqlServer 中正常运行。
知道如何解决这个问题吗?
我也欢迎其他建议。
请注意,我确实有一个循环遍历数据框并逐行插入的解决方法,但我真的更喜欢使用数据框的解决方案,比如批处理、批量插入等
我已将问题减少到 pandas to_sql 在使用 sqlalchemy 作为池框架处理 sybase 时在 #tmp 周围添加双引号。
Code :
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)
Error:
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)")
当我删除#tmp 周围的双引号时,它在 sybase 中工作正常。 此外,同样的代码无需任何修改即可在 SqlServer 中正常运行。
知道如何解决这个问题吗? 我也欢迎其他建议。 请注意,我确实有一个循环遍历数据框并逐行插入的解决方法,但我真的更喜欢使用数据框的解决方案,比如批处理、批量插入等