I tested my app with version 1.92.1 and it works. I then copied it to trunk 
and I can no longer connect to the PostgreSQL database I use.

I looked at the code in dal.py for the PostgreSQL adapter and driver_args 
defaults to empty dict {}, adding some debug print code shows it is set on 
the class construction to be {'check_same_thread': False} and when this is 
passed to the driver an invalid keyword argument error occurs

Here is a traceback from the ticket.

web2py™ Version 1.92.1 (2011-03-03 08:26:32)  Python Python 2.6.5: 
/usr/bin/python  Traceback 

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Traceback (most recent call last):
  File "/home/camcentral/Dev/web2py-hg/gluon/restricted.py", line 188, in 
restricted
    exec ccode in environment
  File "/home/camcentral/Dev/web2py-hg/applications/ccims/models/A_db.py" 
<http://127.0.0.1:8000/admin/default/edit/ccims/models/A_db.py>, line 22, in 
<module>
    db = DAL('postgres://user:password@localhost/cc_ims', POOL_SIZE, 
check_reserved=check_reserved_value)
  File "/home/camcentral/Dev/web2py-hg/gluon/dal.py", line 3529, in __init__
    raise RuntimeError, "Failure to connect, tried 5 times:\n%s" % error
RuntimeError: Failure to connect, tried 5 times:
'check_same_thread' is an invalid keyword argument for this function

 Error snapshot [image: help] Detailed traceback description 

<type 'exceptions.RuntimeError'>(Failure to connect, tried 5 times: 
'check_same_thread' is an invalid keyword argument for this function) 
Frames

   -  
   
   *File /home/camcentral/Dev/web2py-hg/gluon/restricted.py in restricted at 
   line 188* code arguments variables 
    Function argument list 
   
   (code='# -*- coding: utf-8 -*- \n# this file is 
   released...sion.table_name.requires = IS_IN_SET(db.tables)\n\n', 
   environment={'A': <class 'gluon.html.A'>, 'B': <class 'gluon.html.B'>, 
   'BEAUTIFY': <class 'gluon.html.BEAUTIFY'>, 'BODY': <class 
   'gluon.html.BODY'>, 'BR': <class 'gluon.html.BR'>, 'CENTER': <class 
   'gluon.html.CENTER'>, 'CLEANUP': <class 'gluon.validators.CLEANUP'>, 'CODE': 
   <class 'gluon.html.CODE'>, 'COUPLE_MENUS': True, 'CRYPT': <class 
   'gluon.validators.CRYPT'>, ...}, 
   layer='/home/camcentral/Dev/web2py-hg/applications/ccims/models/A_db.py')
    Code listing 
   
   183.
   184.
   185.
   186.
   187.
   188.
   
   189.
   190.
   191.
   192.
   
           if type(code) == types.CodeType:
               ccode = code
           else:
               ccode = compile2(code,layer)
   
           exec ccode in environment
   
       except HTTP:
           raise
       except Exception:
           # XXX Show exception in Wing IDE if running in debugger
   
    Variables  environment {'A': <class 'gluon.html.A'>, 'B': <class 
   'gluon.html.B'>, 'BEAUTIFY': <class 'gluon.html.BEAUTIFY'>, 'BODY': <class 
   'gluon.html.BODY'>, 'BR': <class 'gluon.html.BR'>, 'CENTER': <class 
   'gluon.html.CENTER'>, 'CLEANUP': <class 'gluon.validators.CLEANUP'>, 'CODE': 
   <class 'gluon.html.CODE'>, 'COUPLE_MENUS': True, 'CRYPT': <class 
   'gluon.validators.CRYPT'>, ...}  ccode <code object <module> at 
   0x30bda08, file "/home/...py-hg/applications/ccims/models/A_db.py", line 8>  
    -  
   
   *File /home/camcentral/Dev/web2py-hg/applications/ccims/models/A_db.py in 
   <module> at line 22* code arguments variables 
    Function argument list 
   
   ()
    Code listing 
   
   17.
   18.
   19.
   20.
   21.
   22.
   
   23.
   24.
   25.
   26.
   
       # else use a normal relational database
   #*** Add customization
   #   db = DAL('sqlite://storage.sqlite')       # if not, use SQLite or other 
DB
   # CamCentral IMS configuration database
   #   db = DAL('mysql://root:pass@localhost/cc_ims', POOL_SIZE, 
check_reserved=check_reserved_value)
       db = DAL('postgres://user:password@localhost/cc_ims', POOL_SIZE, 
check_reserved=check_reserved_value)
   
   ## if no need for session
   # session.forget()
   
   #########################################################################
   
    Variables  DAL <class 'gluon.dal.DAL'>  check_reserved undefined  
   POOL_SIZE 0  db undefined  check_reserved_value ['all']  
    -  
   
   *File /home/camcentral/Dev/web2py-hg/gluon/dal.py in __init__ at line 
   3529* code arguments variables 
    Function argument list 
   
   (self=<DAL {'_lastsql': '', '_db_codec': 'UTF-8', '_ur...cc_ims', 
   '_pool_size': 0, '_dbname': 'postgres'}>, 
   uri='postgres://user:password@localhost/cc_ims', pool_size=0, folder=None, 
   db_codec='UTF-8', check_reserved=['all'], migrate=True, fake_migrate=False, 
   decode_credentials=False, driver_args={'check_same_thread': False})
   

Reply via email to