From: Ian S. <ia...@et...> - 2002-10-30 16:08:16
|
Excellent example, thanks. - I. -----Original Message----- From: Aaron Held [mailto:aaron@MetroNY.com] Sent: Wednesday, October 30, 2002 10:48 AM To: Ian Sparks Cc: Webware-Discuss (E-mail) Subject: Re: [Webware-discuss] dbPool usage in configuration.py : from MiscUtils.DBPool import DBPool from pyPgSQL import PgSQL DEBUG=3D1 if DEBUG: print 'before datapool' # set up the database connection pool datapool =3D DBPool(PgSQL, 5, 'localhost::comsci:user:passwd) clientpool['testing']=3DDBPool(PgSQL,2,localhost::testing:user:passwd') clientpool['metrony']=3DDBPool(PgSQL,2,'localhost::metrony:user:passwd') if DEBUG: print 'after datapool' --- in servlet: from configuration import datapool ..... def login(self , username=3DNone, passwd=3DNone): conn =3D datapool.getConnection() c =3D conn.cursor() c.execute('''SELECT "eMail" FROM "users" where "eMail"=3D%(username)s=20 AND passwd=3D%(passwd)s ''',{'username':username,'passwd':passwd}) r =3D c.fetchone() c.close() conn.close() if (r): user=3D 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=20 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=3DNone, passwd=3DNone): conn =3D datapool.getConnection() c =3D conn.cursor() c.execute('''SELECT "eMail" FROM "users" where "eMail"=3D%(username)s=20 AND passwd=3D%(passwd)s ''',{'username':username,'passwd':passwd}) r =3D c.fetchone() c.close() conn.close() if (r): user=3D self.getUser(username) print 'validated user in CSUserManager' return user else: print 'User not logged in' return None .... if (__name__=3D=3D"__main__"): print 'Start Main' UM =3D CSUserManager() user=3DUM.login('aa...@me...','vector') aaron=3DUM.login('aa...@me...','vector') print 'Logged in :%s: ' % user.name user2=3DUM.getUser('mg...@me...') print 'UserName=3D %s' % user2.name print 'UserRole=3D %s' % user2.role user=3DUM.requestUserByName(user,user2.name) print '''requested 'aa...@me...' got: ''', user user.passwd=3D'adasdasas' print user.company print UM.requestUserList(aaron,0,'a') userList=3D UM.requestUserList(aaron) print 'Total', userList.pop(0)[0] print userList print 'groups' , user.groups print 'notes', user.notes user.groups=3D"newnaksdjkasja" user.notes=3D'notes' user.phone=3D'5551212' UM.updateUser(user,user) =09 else: UserManager=3DCSUserManager() The idea is that if I call the module directly from a python command=20 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): =20 user=3DUserManager.login(fieldDict['userName'],fieldDict['password']) -Aaron Ian Sparks wrote: > Where would I set up my dbPool or other "application wide" objects in = webware? >=20 > Guess : In contextInitialize of __init__.py? in the MyContext = directory? >=20 > Do I need to do anything to attach the pool to the application : >=20 > application.dbpool =3D DBPool(....) ? >=20 > If someone could post a simple example of setup/usage I'd appreciate = it. >=20 > Thanks! >=20 > - Ian Sparks. >=20 >=20 > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Webware-discuss mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webware-discuss |