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

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.

Reply via email to