Hi all,
Due to a strange Postgresql setup by my systems admin, I can not specify
the host as "localhost" to connect to my production database. Instead, I
have to specify the unix socket. This is currently unsupported in web2py,
but I came up with a temporary workaround for the time being. In a connect
function in gluon/dal.py I inserted the following lines
@@ -2458,6 +2458,8 @@ class PostgreSQLAdapter(BaseAdapter):
# choose diver according uri
self.__version__ = "%s %s" % (self.driver.__name__, self.driver.
__version__)
def connect(msg=msg,driver_args=driver_args):
+ if host.startswith('/'):
+ driver_args['unix_sock'] = host
return self.driver.connect(msg,**driver_args)
self.pool_connection(connect)
self.after_connection()
Connection strings that have a host name starting with a forward slash will
be interpreted as a unix socket instead.
eg. postgres://user:password@/tmp/.s.PGSQL.5432/database
where the unix socket is /tmp/.s.PGSQL.5432.
I don't know how well this plays with different types of connection strings
(eg. port also specified).
If anyone has a better solution, I'd like to hear about it.
By the way, there's a typo (diver -> driver) in the comment :)
Cheers,
Liam
--