Python 3.x 如果存在,则在使用时,pandas to_sql将失败

Python 3.x 如果存在,则在使用时,pandas to_sql将失败,python-3.x,pandas,sqlalchemy,Python 3.x,Pandas,Sqlalchemy,我试图使用if-to-sql参数和sqlalchemy,但我似乎无法让它工作 版本 sqlalchemy版本1.2.12 熊猫版本0.23.4 python 3.5.2 engine = create_engine(postgress_connection_string, echo=True) df1 = pd.DataFrame([['Abe','1','True'],['Ben','2','True'],['Charlie','3','True']], columns=['Name','N

我试图使用if-to-sql参数和sqlalchemy,但我似乎无法让它工作

版本
  • sqlalchemy版本1.2.12
  • 熊猫版本0.23.4
  • python 3.5.2

    engine = create_engine(postgress_connection_string, echo=True)
    df1 = pd.DataFrame([['Abe','1','True'],['Ben','2','True'],['Charlie','3','True']], columns=['Name','Number','Other'])
    
    df1.to_sql('df_tbl',engine) #works if table doesn't exist, else fails
    df1.to_sql('df_tbl',engine, if_exists='replace') #fails with error message
    
错误:AttributeError:“连接”对象没有属性“\u引擎”

调试输出 ---------------------------------------------------------------------------AttributeError回溯(最近的调用) 最后)在 7个df_骑乘站。重命名(index=str,columns={'orig_ad_id':'ad_id', ‘原始停留时间’:‘原始到达时间’,‘原始到达时间’:‘到达时间’,inplace=True) 8个df_骑乘站。头() ---->9 df_rides_stops.to_sql('rides',engine,如果存在='replace') 十,

~/dev/Ride/qgis3/lib/python3.5/site-packages/pandas/core/generic.py in to_sql(self、name、con、schema,如果存在,则索引、索引标签、, chunksize,dtype)2128 sql.to_sql(self,name,con, schema=schema,if_exists=if_exists,2129
index=index,index\u label=index\u label,chunksize=chunksize, ->2130 dtype=dtype)2131 2132 def to_pickle(self,path,compression='infer'

中的~/dev/Ride/qgis3/lib/python3.5/site-packages/pandas/io/sql.py to_sql(框架、名称、con、模式、如果存在、索引、索引标签、, chunksize,数据类型) 448.to_sql(框架,名称,如果_存在=如果_存在,索引=索引, 449索引标签=索引标签,模式=模式, -->450 chunksize=chunksize,dtype=dtype) 451 452

中的~/dev/Ride/qgis3/lib/python3.5/site-packages/pandas/io/sql.py to_sql(self、frame、name、if_存在、index、index_标签、schema、, chunksize,dtype)1124
如果存在=如果存在,索引标签=索引标签,1125
schema=schema,dtype=dtype) ->1126 table.create()1127 table.insert(chunksize)1128 if(不是name.isdigit()而不是name.islower()):

中的~/dev/Ride/qgis3/lib/python3.5/site-packages/pandas/io/sql.py 创造(自我) 563 raise VALUERROR(“表'%s'已存在。”%self.name) 564 elif self.if_exists==“replace”: -->565 self.pd_sql.drop_表(self.name,self.schema) 566自我执行创建() 567 elif self.if_exists==“append”:

中的~/dev/Ride/qgis3/lib/python3.5/site-packages/pandas/io/sql.py drop_table(self,table_name,schema)1173 schema=schema 或者self.meta.schema 1174,如果self.has_table(table_name, 模式): ->1175 self.meta.reflect(仅=[table_name],schema=schema)1176 self.get_table(table_name, schema.drop()1177 self.meta.clear()

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/sql/schema.py 在反射(self、bind、schema、views、only、extend_existing、, 自动加载\u替换,**方言\u kwargs)3961表示中的名称 加载:3962尝试: ->3963表格(名称,自我,**反映选项)3964,exc除外。不可反映表格错误为uerr:3965
util.warn(“跳过表%s:%s”%(名称,uerr))

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/sql/schema.py 在(cls,*args,**千瓦) 455除: 456使用util.safe_reraise(): -->457元数据。删除表(名称、架构) 458 459@property

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/util/langhelpers.py 在退出中(自我、类型、值、回溯) 64 self._exc_info=None#删除潜在的循环引用 65如果不是仅自我警告: --->66兼容性(exc_类型、exc_值、exc_tb) 67其他: 68如果不是compat.py3k和self.\u exc\u info和self.\u exc\u info[1]:

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/util/compat.py 重新发布(tp、值、tb、原因) 247如果值。回溯不是tb: 248提升值。带_回溯(tb) -->249提高价值 250 251其他:

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/sql/schema.py 在(cls,*args,**千瓦) 450元数据。添加表(名称、架构、表) 451试试: -->452表._init(名称、元数据、*args、**kw) 453表.调度.在\u父\u附加后(表,元数据) 454返回表

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/sql/schema.py 在_init中(self、name、metadata、*args、**kwargs) 532自动加载( 533元数据,自动加载, -->534包含列,_extend_on=_extend_on) 535 536#初始化所有列等对象。经过深思熟虑后完成

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/sql/schema.py 在自动加载中(自、元数据、自动加载、包含列、, 排除列,扩展(打开) 545自动加载带有.dialogue.reflecttable的_, 546 self,include_列,exclude_列, -->547(扩展开)=(扩展开) 548 ) 549其他:

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/engine/base.py 在运行中可调用(self,callable,*args,**kwargs)1543 1544
""" ->1545返回可调用函数(self,*args,**kwargs)1546 1547定义运行函数访问者(self,visitorcallable,element,**kwargs):

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/engine/default.py 在反射表中(self、connection、table、include_列、,
df1.to_sql('df_tbl',con=engine, if_exists='replace')