[Zope] ZSQL with different user

Tino Wildenhain tino at wildenhain.de
Mon Dec 19 09:39:51 EST 2005


Pier Luigi Fiorini schrieb:
> Hello,
> I'm developing a Zope application that uses a PostgreSQL connection and 
> several ZSQL objects.
> People should log in using a Postgres user and ZSQL object should be executed 
> by the user that's logged in. Multiple people can be logged at the same time.
> Unfortunately it is not possible because the same Postgres connection is used 
> by all the ZSQL object. Is there a way to change the user executing a ZSQL 
> query?

Well good news and bad news...
Good news first:

yes it can be done

Bad news:

you would have to code it ;)

You could base on the database adapter you currently
have but organize your connection pool on a per
user basis - so you need a connection with
a user-folder as well (Interesting
if you could subclass Userfolder and PsycopgDA...)
so when a user logs in you look in the connection
pool and/or authorize the user and use an idle/new
connection for this user when ZSQL methods are called.

Interesting project but not so easy.

Also in worst case you could end up having

zope-threads X users connection to your database.

And connection setup is somewhat expensive,
so if your pool is too small performance will suffer.

Regards
Tino


More information about the Zope mailing list