Python 3 で SQLAlchemy を使用して、多くの (100k のオーダーで) レコードをデータベースに挿入する方法を理解しようとしています。すべてがトランザクションの使用を指しています。しかし、私はそれがどのように行われるかについて少し混乱しています。
一部のページでは からトランザクションを取得すると述べていますconnection.begin()
が、他の場所ではそうであると述べておりsession.begin()
、このページでは存在しないと述べています。session.create_transaction()
これが私がやろうとしていることです:
def addToTable(listOfRows):
engine = create_engine('postgresql+pypostgresql:///%s' % db,echo = False)
Session = sessionmaker(bind = engine)
session = Session()
table = myTable(engine,session)
for row in listOfRows:
table.add(row)
table.flush() ### ideally there would be a counter and you flush after a couple of thousand records
class myTable:
def __init__(self,engine,session):
self.engine = engine
self.session = session
self.transaction =createTransaction()# Create transaction code here
def add(self,row):
newRow = tableRow(row) ## This just creates a representation of a row in the DB
self.transaction.add(newRow)
self.transaction.flush()
def flush(self):
self.transaction.commit()