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
>>
>>

Reply via email to