5

I'm using peewee to interface a MySQL database. I have a list of entries which must be inserted into database and updated in case they're already present there. I'm using create_or_get function for this. I also use threading to speed up the process; code looks like this:

# pool is just a map wrapper around standard threading module
pool  = utils.ThreadPool()
    for page in xrange(0, pages):
        pool.add_task(self.update_page, page)
pool.wait_completion()

def update_page(self, num):
    for entry in self.get_entries_from_page(num):
        self.push_entry(entry)

def push_entry(self, entry):
    with _db.execution_context():
        result, new = EntryModel.create_or_get(**entry) # << error  here
        if not new :
            if entry['date'] > result.date:
                result.hits += 1
                result.date = track['date']
                result.save()

Database initialization:

_db.initialize(playhouse.pool.PooledMySQLDatabase(n, user = u, passwd = w, host = h, port = p))

Everything was running smoothly, but all of sudden I began to receive a lot of errors on the mentioned line: (1305, 'SAVEPOINT s449cd5a8d165440aaf47b205e2932362 does not exist')

Savepoint number changes every time and data is not being written to database. Recreating database did not help. What can lead to this error?

user37741
  • 370
  • 1
  • 10

1 Answers1

0

Try removing autocommit=True during database connection create.

ehcp
  • 531
  • 4
  • 4