Я пытаюсь выяснить, как вставить много (порядка 100 КБ) записей в базу данных, используя SQLAlchemy в Python 3. Все указывает на использование транзакций. Тем не менее, я немного смущен тем, как это делается.
На некоторых страницах говорится, что вы получаете транзакцию из 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()