Python 3.x 在aiohttp框架中,从多个表中的另一个数据库异步插入数据

Python 3.x 在aiohttp框架中,从多个表中的另一个数据库异步插入数据,python-3.x,python-asyncio,aiohttp,Python 3.x,Python Asyncio,Aiohttp,我在postgres数据库中有多个表。我想将所有表从一个数据库异步复制到另一个数据库。。有没有办法同时执行此操作 我使用aiohttp框架和sqlalchemy作为ORM def bulk_insert_sessionwise(cls, model, data): # cls.__session = session # from sqlalchemy.orm import scoped_session cls.__session = DatabaseUtil.get_

我在postgres数据库中有多个表。我想将所有表从一个数据库异步复制到另一个数据库。。有没有办法同时执行此操作

我使用
aiohttp
框架和
sqlalchemy
作为ORM

def bulk_insert_sessionwise(cls, model, data):
    # cls.__session = session


    # from sqlalchemy.orm import scoped_session
    cls.__session = DatabaseUtil.get_archive_session()
    try:
        cls.__session.bulk_insert_mappings(model, data,False,True)
        cls.__session.commit()
        return {'response': True}
    except Exception as e:
        cls.__session.rollback()
        raise e
    finally:
        if cls.__session:

            DatabaseUtil.close_session(cls.__session)
导入异步 loop=asyncio.get\u running\u loop()

#在run_in_executor中调用此函数

        for table in tables:
            tasks.append(loop.run_in_executor(None,self.bulk_insert_sessionwise, datamodel, 
                                              data))
            
        result, pending = await asyncio.wait(tasks)

你的问题有点不清楚,tbh,我明白你想做什么,不过我很难理解你的问题是什么。



Getting this error----




Traceback (most recent call last):
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 2874, in _bulk_save_mappings
    render_nulls,
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\persistence.py", line 62, in _bulk_insert
    connection = session_transaction.connection(base_mapper)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 312, in connection
    return self._connection_for_bind(bind, execution_options)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 418, in _connection_for_bind
    conn = self._parent._connection_for_bind(bind, execution_options)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 435, in _connection_for_bind
    if self.session.twophase and self._parent is None:
AttributeError: 'NoneType' object has no attribute 'twophase'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "C:\Users\HM137BP\AppData\Local\Programs\Python\Python37\lib\concurrent\futures\thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\appserver\dataexchange\sp\scenario.py", line 1206, in bulk_insert_sessionwise
    raise e
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\appserver\dataexchange\sp\scenario.py", line 1201, in bulk_insert_sessionwise
    cls.__session.bulk_insert_mappings(model, data,False,True)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 2790, in bulk_insert_mappings
    render_nulls,
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 2880, in _bulk_save_mappings
    transaction.rollback(_capture_exception=True)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\util\langhelpers.py", line 79, in __exit__
    compat.reraise(type_, value, traceback)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\util\compat.py", line 129, in reraise
    raise value
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 2880, in _bulk_save_mappings
    transaction.rollback(_capture_exception=True)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 509, in rollback
    self._assert_active(prepared_ok=True, rollback_ok=True)
  File "C:\Users\HM137BP\EYAsteriskTools1.0\backend\eydupontvenv\lib\site-packages\sqlalchemy\orm\session.py", line 303, in _assert_active
    raise sa_exc.ResourceClosedError(closed_msg)
sqlalchemy.exc.ResourceClosedError: This transaction is closed