First I wanted to correct the regex that I sent previously. It didn't
work with connection strings which didn't specify the character set.

Instead of removing the last '?' symbol I added one such symbol in the
db group to make it non-greedy:

(?P<db>.+?)

I've tested it a bit and it appears to work fine:

'^(?P<user>[^:@]+)(\:(?P<passwd>[...@]*))?@(?P<host>[^\:/]+)(\:(?P<port>[0-9]+))?/(?P<db>.+?)(\?set_encoding=(?P<charset>\w+))?$'

If SET NAMES doesn't work with most versions of firebird, then I guess
it should be removed.

If, on the other hand, connect(...charset) works fine (I haven't
tested the trunk version yet), then it should replace SET NAMES.

I'm pretty new to Firebird, so an expert opinion is in order.

On Tue, Jun 23, 2009 at 9:18 PM, mdipierro<[email protected]> wrote:
>
> should we leave the SET NAMES of leave the "connect(...charset)" as in
> trunk now?
>
>
> On Jun 23, 4:18 am, Alexei Vinidiktov <[email protected]>
> wrote:
>> I think I've found the bug. There was a superfluous '?' symbol at the
>> end of the regex statement at line 837 in sql.py of web2py 1.64.3:
>>
>> re.compile('^(?P<user>[^:@]+)(\:(?P<passwd>[...@]*))?@(?P<host>[^\:/]+)(\:(?P<port>[0-9]+))?/(?P<db>.+)(\?set_encoding=(?P<charset>\w+))?$'
>>
>> should be
>>
>> re.compile('^(?P<user>[^:@]+)(\:(?P<passwd>[...@]*))?@(?P<host>[^\:/]+)(\:(?P<port>[0-9]+))?/(?P<db>.+)(\?set_encoding=(?P<charset>\w+))$'
>>
>> Now the regex catches both the path to the db file and the charset.
>>
>> 'set_encoding=None' now works fine and I can sucessfully connect to
>> the database.
>>
>> I've run into another couple of issues that don't have to do with
>> connecting to Firbird. I'll post then in separate threads.
>>
>>
>>
>> On Tue, Jun 23, 2009 at 9:38 AM, mdipierro<[email protected]> wrote:
>>
>> > Can you help me debug why? Perhaps there is a typo in the regex?
>>
>> > Massimo
>>
>> > On Jun 22, 8:23 pm, Alexei Vinidiktov <[email protected]>
>> > wrote:
>> >> Thanks, Massimo!
>>
>> >> The auth.settings.password_field='password2' thing did the trick!
>>
>> >> I'm afraid the '?set_encoding=None' thing doesn't work.
>>
>> >> As I said earlier I tried using the string that you suggested:
>>
>> >> db = SQLDB('firebird://sysdba:passw...@localhost/employee.fdb?
>> >> set_encoding=None')
>>
>> >> but I got this error:
>>
>> >> "'isc_attach_database:   I/O error for file 
>> >> "employee.fdb?set_encoding=None"
>> >>  Error while trying to open file.  No such file or directory'"
>>
>> >> On Tue, Jun 23, 2009 at 4:46 AM, mdipierro<[email protected]> wrote:
>>
>> >> > ?set_encoding=None
>>
>> >> > should have the effect of not running "SET NAMES"
>>
>> >> > The other problem you have is that "password' cannot be used a field
>> >> > name by auth because it is a reserved in firebird.
>>
>> >> >   auth.settings.password_field='password2'
>>
>> >> > before auth.define_tables()
>>
>> >> > Massimo
>>
>> >> > On Jun 22, 9:42 am, Alexei Vinidiktov <[email protected]>
>> >> > wrote:
>> >> >> Thanks for your input, Jose.
>>
>> >> >> As I said earlier, I had tried commenting the lines that add SET NAMES
>> >> >> in sql.py, and I got a different error message that I quoted in a
>> >> >> previous email. Part of the traceback was:
>>
>> >> >>  self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
>> >> >> ProgrammingError: (-104, \'isc_dsql_prepare:   Dynamic SQL Error  SQL
>> >> >> error code = -104
>> >> >>  Token unknown - line 6, column 2  password\')'
>>
>> >> >> And the solution Massimo suggested didn't work either which I also
>> >> >> reported in a previous email.
>>
>> >> >> On Mon, Jun 22, 2009 at 10:36 PM, Jose<[email protected]> wrote:
>>
>> >> >> > On 22 jun, 02:54, Alexei Vinidiktov <[email protected]>
>> >> >> > wrote:
>> >> >> >> Hello,
>>
>> >> >> >> I'm trying to make a connection to a Firebird db file, but I keep
>> >> >> >> getting this error:
>>
>> >> >> >> Traceback (most recent call last):
>> >> >> >>  File "/var/www/alvinru/data/www/bilingsoft.ru/gluon/restricted.py",
>> >> >> >> line 98, in restricted
>> >> >> >>  exec ccode in environment
>> >> >> >>  File 
>> >> >> >> "/var/www/alvinru/data/www/bilingsoft.ru/applications/notebook/models/db.py",
>> >> >> >> line 12, in <module>
>> >> >> >>  db = SQLDB(\'firebird://sysdba:passw...@localhost/employee.fdb\')
>> >> >> >>   File "/var/www/alvinru/data/www/bilingsoft.ru/gluon/sql.py", line
>> >> >> >> 837, in __init__
>> >> >> >>   self._execute(\'SET NAMES %s;\' % charset)
>> >> >> >>   File "/var/www/alvinru/data/www/bilingsoft.ru/gluon/sql.py", line
>> >> >> >> 835, in <lambda>
>> >> >> >>     self._execute = lambda *a, **b: self._cursor.execute(*a,**b)
>> >> >> >> ProgrammingError: (-104, \'isc_dsql_prepare:  Dynamic SQL Error  SQL
>> >> >> >> error code = -104
>> >> >> >> Token unknown - line 1, column 5  NAMES\')'
>>
>> >> >> >> My connection string in db.py is like this:
>>
>> >> >> >> db = SQLDB('firebird://sysdba:passw...@localhost/employee.fdb')
>>
>> >> >> >> I can successfully connect to the same database from the command 
>> >> >> >> line:
>>
>> >> >> >> import kinterbasedb
>> >> >> >> con = kinterbasdb.connect(
>> >> >> >>     host='localhost', database='employee.fdb',
>> >> >> >>     user='sysdba', password='password'
>> >> >> >>   )
>>
>> >> >> >> I'm using CentOS 5.2 with Python 2.5.4, Firebird 2.1.2 Super Server
>> >> >> >> and the latest version of web2py.
>>
>> >> >> >> I'd be grateful for any clues as to what might be happening.
>>
>> >> >> >> --
>> >> >> >> Alexei Vinidiktov
>>
>> >> >> > This had commented on it to Massimo, the instruction :
>> >> >> > SET NAMES
>> >> >> > It is not valid in firebird.
>>
>> >> >> > Jose
>>
>> >> >> --
>> >> >> Alexei Vinidiktov
>>
>> >> --
>> >> Alexei Vinidiktov
>>
>> --
>> Alexei Vinidiktov
> >
>



-- 
Alexei Vinidiktov

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to