Python 3.x 在aiohttp框架中,从多个表中的另一个数据库异步插入数据
我在postgres数据库中有多个表。我想将所有表从一个数据库异步复制到另一个数据库。。有没有办法同时执行此操作 我使用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_
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