Я пытаюсь заставить sqlalchemy (1.3) on_duplicate_key_update () работать и не удается.
Я даже не могу понять, что случилось.Вот пример кода и трассировки, пожалуйста, сообщите:
последний) через 18 ins = insert (metadata.tables ['numbers']). Values ({'number': 12}) 19 on_dup = ins.on_duplicate_key_update ({'number': 2}) ---> 20 print (on_dup) 21 con.execute (on_dup)
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ elements.py в str (self) 470 def str (self): 471, если util.py3k: -> 472 return str (self.compile ()) 473 else: 474 вернуть unicode (self.compile()). закодировать (# noqa
in (self, bind, dialect, ** kw)
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy\ sql \ elements.py в компиляции (self, default, bind, dialect, ** kw) 460 else: 461 dialect = default.StrCompileDialect () -> 462 возвращает self._compiler (диалект, bind = bind, ** квт) 463 464 def _compiler (self, диалект, ** квт):
E: \ Coding \ Anaconda3 \ envs\ tf \ lib \ site-packages \ sqlalchemy \ sql \ elements.py в _compiler (self, dialect, ** kw) 466 диалект. "" "467 -> 468 возвращают dialect.statement_compiler (диалект, self, ** квт)) 469 470 def str (self):
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ compiler.py в init (self, dialect, оператор, column_keys, inline, ** kwargs) 560 # dialect.label_length или dialect.max_identifier_length 561 self.truncated_names = {} -> 562 Скомпилировано. init (self,диалект, оператор ** ** kwargs) 563 564 if (
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ compiler.py в init (self, dialect, Statement, bind, schema_translate_map, compile_kwargs) 317, если self.can_execute: 318 self.execution_options = Statement._execution_options -> 319 self.string = self.process (self.statement,** compile_kwargs) 320 321 @ util.deprecated (
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ compiler.py в процессе (self, obj, **kwargs) 348 349 def процесс (self, obj, ** kwargs): -> 350 return obj._compiler_dispatch (self, ** kwargs) 351 352 def str (self):
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ members.py в _compiler_dispatch (self, visitor, ** kw) 89 повысить exc.UnsupportedCompilationError (посетитель, cls) 90 других: --> 91 вернуть мет (себя, ** кВт) 92 93 остальное:
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ compiler.py в visit_insert (self, insert_stmt, asfrom, ** kw) 2458, если insert_stmt._post_values_clause не является None: 2459
post_values_clause = self.process (-> 2460 insert_stmt._post_values_clause, ** kw 2461) 2462, если post_values_47_ * 10* E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ compiler.py в процессе (self, obj, ** kwargs) 348 349 процесс def (self, obj, ** kwargs):-> 350 return obj._compiler_dispatch (self, ** kwargs) 351352 def str (self):
E: \ Coding \ Anaconda3 \ envs \ tf \ lib \ site-packages \ sqlalchemy \ sql \ members.py в _compiler_dispatch (self, посетитель,** kw) 87 meth = getter (посетитель) 88 кроме AttributeError: ---> 89 повышение exc.UnsupportedCompilationError (посетитель, cls) 90 else: 91 возврат мет (self, ** kw)
Я подключаюсь к MariaDB 10.3.13 с sqlalchemy 1.3.1 из conda-forge.Запуск в ноутбуке Jupyter v5.7.6 с Python 3.6.7