from MiscUtils.DBPool import DBPool
from pyPgSQL import PgSQL
DEBUG=1
if DEBUG:
print 'before datapool'
# set up the database connection pool
datapool = DBPool(PgSQL, 5, 'localhost::comsci:user:passwd)
clientpool['testing']=DBPool(PgSQL,2,localhost::testing:user:passwd')
clientpool['metrony']=DBPool(PgSQL,2,'localhost::metrony:user:passwd')
if DEBUG:
print 'after datapool'
---
in servlet:
from configuration import datapool
.....
def login(self , username=None, passwd=None):
conn = datapool.getConnection()
c = conn.cursor()
c.execute('''SELECT "eMail" FROM "users" where "eMail"=%(username)s AND passwd=%(passwd)s ''',{'username':username,'passwd':passwd})
r = c.fetchone()
c.close()
conn.close()
if (r):
user= self.getUser(username)
print 'validated user in CSUserManager'
return user
else:
print 'User not logged in'
return None
Although I would not call the database from the servlet directly. Just put webware in PYTHONPATH and write a module like:
UserManager.py
#
# CSUser factory
#
from CSUser import CSUser
from configuration import datapool
class CSUserManager:
.....
def login(self , username=None, passwd=None):
conn = datapool.getConnection()
c = conn.cursor()
c.execute('''SELECT "eMail" FROM "users" where "eMail"=%(username)s AND passwd=%(passwd)s ''',{'username':username,'passwd':passwd})
r = c.fetchone()
c.close()
conn.close()
if (r):
user= self.getUser(username)
print 'validated user in CSUserManager'
return user
else:
print 'User not logged in'
return None
....
if (__name__=="__main__"):
print 'Start Main'
UM = CSUserManager()
user=UM.login('[EMAIL PROTECTED]','vector')
aaron=UM.login('[EMAIL PROTECTED]','vector')
print 'Logged in :%s: ' % user.name
user2=UM.getUser('[EMAIL PROTECTED]')
print 'UserName= %s' % user2.name
print 'UserRole= %s' % user2.role
user=UM.requestUserByName(user,user2.name)
print '''requested '[EMAIL PROTECTED]' got: ''', user
user.passwd='adasdasas'
print user.company
print UM.requestUserList(aaron,0,'a')
userList= UM.requestUserList(aaron)
print 'Total', userList.pop(0)[0]
print userList
print 'groups' , user.groups
print 'notes', user.notes
user.groups="newnaksdjkasja"
user.notes='notes'
user.phone='5551212'
UM.updateUser(user,user)
else:
UserManager=CSUserManager()
The idea is that if I call the module directly from a python command line it will import configuration.py and do some basic unit testing. If I call it as a module (from a servlet) it will put an instance of itself in memory.
Then from the servlet you can use the database as follows:
from CSUserManager import UserManager #<-- pull in the data class
class loginUser(FormValidator):
def validate(self,fieldDict): user=UserManager.login(fieldDict['userName'],fieldDict['password'])
-Aaron
Ian Sparks wrote:
Where would I set up my dbPool or other "application wide" objects in webware?Guess : In contextInitialize of __init__.py? in the MyContext directory? Do I need to do anything to attach the pool to the application : application.dbpool = DBPool(....) ? If someone could post a simple example of setup/usage I'd appreciate it. Thanks! - Ian Sparks. ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Webware-discuss mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/webware-discuss
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Webware-discuss mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/webware-discuss
