(i´m not an expert here but i faced the same problem) I moved to postgresql and no more database locks. sqlite does not allow to have scheduler and your code writting to the database at the same , or at least that was my understanding...
Regards António 2017-02-03 14:01 GMT+00:00 Jesse Hunt <jh.trumpe...@gmail.com>: > Good afternoon all, > > I am experiencing issues while trying to perform operations using my DAL > from a module. I recently moved code from the default controller to a > module for better coding practices. The code was running previous to the > move, but now I experience an error ( <class 'sqlite3.OperationalError'> > database is locked ) everytime I try to run it. > > So far, I have tried: > > - various additions of small snippets I thought might help me fix the > problem from http://www.web2pyslices.com/slice/show/1478/using- > modules-in-web2py > - enabling WAL in SQLite from this thread https://groups.google. > com/forum/#!msg/web2py/2IDEb658VDw/f5jv54bOH30J; > context-place=forum/web2py > > <https://groups.google.com/forum/#!msg/web2py/2IDEb658VDw/f5jv54bOH30J;context-place=forum/web2py> > > But after searching for the last 3 days, I can not find a solution that > matches up with my problem. I will post the code relevant to what is > happening. > FYI: > > - There is a scheduler running > - The following code is running within a module > - I executed the WAL statement in the default controller > > from gluon import current > from gluon.dal import DAL, Field > import pymongo > from datetime import datetime as dt > from datetime import date > > > class mongo_functions: > client = None > connection = None > mongo_db = None > db_name = None > collection = None > collection_name = None > dal_name = None > dal_db = None > > > def __init__(self, connection=None, db_name=None, collection_name=None > , dal_name=None): > > > # if settings returns nothing, connect to local DB > if connection is None: > self.connection = 'mongodb://localhost:27017/' > if db_name is None: > self.db_name = 'test_database' > if collection_name is None: > self.collection_name = 'test_s_collection' > if dal_name is None: > self.dal_name = 'sqlite://development.sqlite' > > # added after looking at slice referenced above > self.session = current.session > self.request = current.request > self.response = current.response > self.cache = current.cache > > > def open_connection(self): > self.client = pymongo.MongoClient(self.connection) > self.mongo_db = self.client[self.db_name] > self.collection = self.mongo_db[self.collection_name] > self.dal_db = DAL(self.dal_name) > print "Connection to Mongo and DAL open" > > > def close_connection(self): > self.collection = None > self.mongo_db = None > self.client.close() > self.dal_db = None > > # the method below refuses to format itself correctly, assume the > tabulation is fine > def query_for_service(self, security_name, field, start_date, end_date > , session_id): > self.dal_db.define_table('export_service', > Field('security_name', notnull=True), > Field('field', notnull=True), > Field('date', type='date'), > Field('value'), > Field('session_id'), > format='%(name)-(field)-(date)s') > > > queried_document = collection.find_one({'sec_name': security_name, > 'field': field}) > # data_set is a list of date/value dictionary objects > data_set = queried_document['data'] > > > # a data_point is a dictionary object with date and value pairs. > for data_point in data_set: > date_object = data_point['date'].date() > > > print start_date > print end_date > print date_object > > > export_list = list() > > > if date_object > start_date and date_object < end_date: > value = data_point['value'] > > > value_dict = {'security_name': security_name, 'field': field, > 'date': date_object, 'value': value, > 'session_id': session_id} > export_list.append(value_dict) > > > self.dal_db.export_service.bulk_insert(export_list) > self.dal_db.commit() > > *Thank you in advance for your time, I very sincerely appreciate it!* > > -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.