Babak submitted a patch to address this issue and it is in trunk. We believe it to be backward compatible but please check it.
On Monday, 28 May 2012 11:51:43 UTC-5, Babak wrote: > > To clarify further, "/tmp" in > > conn_string = "host='/tmp' dbname='foobar' user='foo' password='bar'" > > implies the use of Unix Sockets. This is a legitamte connection and > supported by psycopg2 however it is disregarded by the DAL due to the > Regular Expression enforced syntax of the connection string. > > > On Monday, May 28, 2012 9:43:06 AM UTC-7, Babak wrote: >> >> Web2Py community, >> >> I am rewriting this note, please disregard/delete the prior post (I'm not >> getting updated on it) >> >> Working with the DAL I noted that the Regular Expression does not allow >> for host names that are directories such as "/tmp" >> >> The following line is from DAL.py >> >> [1] >> re.compile('^(?P<user>[^:@]+)(\:(?P<password>[^@]*))?@(?P<host>[^\:@/]+)(\:(?P<port>[0-9]+))?/(?P<db>[^\?]+)(\?sslmode=(?P<sslmode>.+))?$') >> >> Note that the 70th character in [1] above, "/" excludes the option of >> having a host named "/tmp" however the following is a legitimate postgres >> connection: >> >> import psycopg2 >> conn_string = "host='/tmp' dbname='foobar' user='foo' password='bar'" >> conn = psycopg2.connect(conn_string) >> cursor = conn.cursor() >> cursor.execute("SELECT * FROM foobar_table") >> records = cursor.fetchall() >> >> > There are many instances where a UNIX user may prefer sockets over >> localhost connections. The easiest work around I can think of is to change >> [1] to the following: >> >> [2] >> re.compile('^(?P<user>[^:@]+)(\:(?P<password>[^@]*))?@(?P<host>[^\:@]+)(\:(?P<port>[0-9]+))?/(?P<db>[^\?]+)(\?sslmode=(?P<sslmode>.+))?$') >> >> Where the "/" character exclusion is removed from the character class >> definition for the group "host" >> >> Best regards, >> >> Babak >> >>