pandas to_sql не работает при использовании if_exists - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь использовать аргументы if_exists pandas 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: у объекта 'Connection' нет атрибута '_engine'

отладочный вывод

--------------------------------------------------------------------------- AttributeErrorТрассировка (последний вызов был последним) в 7 df_rides_stops.rename (index = str, columns = {'orig_ad_id': 'ad_id', 'orig_stay_time': 'stay_time', 'orig_arrival_utc': 'прибытие_utc'}, inplace = True) 8df_rides_stops.head () ----> 9 df_rides_stops.to_sql ('едет', движок, 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, chunksize, dtype) 2128 sql.to_sql (self, name, con, schema = schema, если_exists = if_exists, 2129
index = index, index_label = index_label, chunksize = chunksize, -> 2130 dtype = dtype) 2131 2132 def to_pickle (собственный, путь, сжатие = 'infer',

~ /dev / Ride / qgis3 / lib / python3.5 / site-packages / pandas / io / sql.py в to_sql (фрейм, имя, con, схема, if_exists, index, index_label, chunksize, dtype) 448 pandas_sql.to_sql (frame, имя, if_exists = if_exists, index = index, 449 index_label = index_label, схема = схема, -> 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_exists, index, index_label, схема, chunksize, dtype) 1124
if_exists = if_exists, index_label = index_label, 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 в create (self) 563 повысить ValueError («Таблица«% s »уже существует.»% self.naя) 564 elif self.if_exists == 'replace': -> 565 self.pd_sql.drop_table (self.name, self.schema) 566 self._execute_create () 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 ifself.has_table (имя_таблицы, схема): -> 1175 self.meta.reflect (только = [имя_таблицы], схема = схема) 1176 self.get_table (имя_таблицы, схема) .drop () 1177 self.meta.clear ()

~ / dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / sql / schema.py в отражении (self, bind, схема, представления, только, extension_existing, autoload_replace, ** dialect_kwargs) 3961 для имени в загрузке: 3962 попробуйте: -> 3963 Таблица (name, self, ** refle_opts) 3964 кроме exc.UnreflectableTableError as uerr: 3965
util.warn ("Пропуск таблицы% s:% s"% (name, uerr))

~ / dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / sql / schema.py в new (cls, * args,** квт) 455, кроме: 456 с утил.afe_reraise (): -> 457 metadata._remove_table (имя, схема) 458 459 @ property

~ / dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / util / langhelpers.py in выход (self, type_, value, traceback) 64 self._exc_info = None # удалить потенциальные циклические ссылки65, если не self.warn_only: ---> 66 compat.reraise (exc_type, exc_value, exc_tb) 67 else: 68, если не compat.py3k и self._exc_info и self._exc_info [1]:

~/dev/Ride/qgis3/lib/python3.5/site-packages/sqlalchemy/util/compat.py в ререйзе (tp, value, tb, причина) 247, если значение. traceback не является tb:248 повысить значение .with_traceback (tb) -> 249 повысить значение 250 251 иначе:

~ / dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / sql / schema.py в new (cls, * args, ** kw) 450 metadata._add_table (имя, схема, таблица) 451 try: -> 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 (self,name, метаданные, * args, ** kwargs) 532 self._autoload (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 (self, metadata, autoload_with, include_columns, exclude_columns, _extend_on)545 autoload_with.dialect.reflecttable, 546 self, include_columns, exclude_columns, -> 547 _extend_on = _extend_on 548) 549 else:

~ / 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 в отражаемой таблице (self, connection, table,include_columns, exclude_columns, ** opts) 387 def отражаемое (388 self, connection, table, include_columns, exclude_columns, ** opts): -> 389 insp = expression.Inspector.from_engine (connection) 390 return insp.reflecttable (391 таблица), include_columns, exclude_columns, ** опts)

~ / dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / engine / refle.py в from_engine (cls, bind) 132 "" "133, если hasattr (bind.dialect, 'inspector'): -> 134 return bind.dialect.inspector (связывание) 135 return Inspector (связывание) 136

~ / dev / Ride / qgis3 / lib / python3.5 / site-packages/sqlalchemy/dialects/postgresql/base.py в init (self, conn) 2026 2027 def init (self, conn): -> 2028 отражение. Inspector. init (self, conn) 2029 2030 def get_table_oid (self, table_name, schema = None):

~ / dev / Ride / qgis3 / lib / python3.5 / site-packages / sqlalchemy / engine /mirror.py в init (self, bind) 101 # установить движок 102, если hasattr (bind, 'engine'): -> 103 self.engine = bind._engine 104 else: 105 self.engine= bind

AttributeError: у объекта 'Connection' нет атрибута '_engine'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...