使用if_exists

时间:2018-11-19 13:31:29

标签: python-3.x pandas sqlalchemy

我试图将if_exists大熊猫to_sql参数与sqlalchemy一起使用,但似乎无法正常工作

版本

  • sqlalchemy版本1.2.12
  • pandas版本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:“连接”对象没有属性“ _engine”

调试输出

  
    

-------------------------------------------------- ---------------------------- AttributeError Traceback(最近一次调用     最后)           7 df_rides_stops.rename(index = str,columns = {'orig_ad_id':'ad_id',     'orig_stay_time':'stay_time','orig_arrival_utc':'arrival_utc'},inplace = True)           8 df_rides_stops.head()     ----> 9 df_rides_stops.to_sql('rides',engine,if_exists ='replace')          10

  
     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / pandas / core / generic.py在   to_sql(self,name,con,schema,if_exists,index,index_label,   2128 sql.to_sql(self,name,con,   schema = schema,if_exists = if_exists,2129
  index = index,index_label = index_label,chunksize = chunksize,   -> 2130 dtype = dtype)2131 2132 def to_pickle(自身,路径,压缩='推断',

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / pandas / io / sql.py在   to_sql(frame,name,con,schema,if_exists,index,index_label,   块大小,dtype)       448 pandas_sql.to_sql(frame,name,if_exists = if_exists,index = index,       449 index_label = index_label,schema = schema,   -> 450个块大小=大块大小,dtype = dtype)       451       452

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / pandas / io / sql.py在   to_sql(自我,框架,名称,if_exists,索引,index_label,架构,   块大小(dtype)1124
  if_exists = if_exists,index_label = index_label,1125
  模式=模式,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提高ValueError(“表'%s'已经存在。”%self.name)       第564章   -> 565 self.pd_sql.drop_table(self.name,self.schema)       第566章       567 elif self.if_exists =='追加':

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / pandas / io / sql.py在   drop_table(self,table_name,schema)1173模式=模式   或self.meta.schema 1174(如果self.has_table(table_name,   模式):   -> 1175 self.meta.reflect(only = [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   反映(自我,绑定,架构,视图,仅,extend_existing,   autoload_replace,** dialect_kwargs)3961作为名称   加载:3962尝试:   -> 3963表格(名称,自我,** reflect_opts)3964除外,除外unreflectableTableError为uerr:3965
  util.warn(“跳过表%s:%s”%(名称,uerr))

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / sql / schema.py   在中(cls,* args,** kw)       455除:       带有util.safe_reraise()的456:   -> 457元数据。_remove_table(名称,架构)       458       459 @属性

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / util / langhelpers.py   在退出中(自身,类型_,值,回溯)        64 self._exc_info = None#删除潜在的循环引用        65如果不是self.warn_only:   ---> 66 compat.reraise(exc_type,exc_value,exc_tb)        其他67条:        68如果没有compat.py3k和self._exc_info和self._exc_info [1]:

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / util / compat.py   加价(tp,值,tb,原因)       247 if value。 traceback 不是tb:       第248章   -> 249增值       250       251其他:

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / sql / schema.py   在中(cls,* args,** kw)       450元数据。_add_table(名称,架构,表)       451尝试:   -> 452 table._init(名称,元数据,* args,** kw)       453 table.dispatch.after_parent_attach(表格,元数据)       454返回表

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / sql / schema.py   在_init中(自身,名称,元数据,* args,** kwargs)       第532章       533元数据,autoload_with,   -> 534个include_columns,_extend_on = _extend_on)       535       536#初始化所有列等对象。反射后完成

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / sql / schema.py   在_autoload(自我,元数据,autoload_with,include_columns,   exclude_columns,_extend_on)       第545章       546个self,include_columns,excluded_columns,   -> 547 _extend_on = _extend_on       548)       549其他:

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / engine / base.py   在run_callable(self,callable_,* args,** kwargs)中1543 1544
  “”   -> 1545 return callable_(self,* args,** kwargs)1546 1547 def _run_visitor(self,visitorcallable,element,** kwargs):

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / engine / default.py   在reflecttable(自身,连接,表,include_columns,   exclude_columns,** opts)       387高清反射台(       388个self,connection,table,include_columns,excludedcolumns,** opts):   -> 389 insp = Reflection.Inspector.from_engine(连接)       第390章       391表,include_columns,excludedcolumns,** opts)

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / engine / reflection.py   在from_engine(cls,bind)中       132“”“       133如果hasattr(bind.dialect,'inspector'):   -> 134返回bind.dialect.inspector(bind)       135返回检查器(绑定)       136

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / dialects / postgresql / base.py   在 init (自我,conn)中2026 2027 def init (自我,conn)中:   -> 2028 Reflection.Inspector。 init ((自己,conn))2029 2030 def get_table_oid(自己,table_name,schema = None):

     

〜/ dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / engine / reflection.py   在 init (自身,绑定)中       101#设置引擎       102如果hasattr(bind,'engine'):   -> 103 self.engine =绑定引擎       其他104条:       105 self.engine =绑定

     

AttributeError:“连接”对象没有属性“ _engine”

0 个答案:

没有答案