我试图将if_exists大熊猫to_sql参数与sqlalchemy一起使用,但似乎无法正常工作
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”