On 30 May 2006 at 21:05, Michael Bayer wrote:
Copies to: sqlalchemy-users
<[email protected]>
From: Michael Bayer <[EMAIL PROTECTED]>
Subject: Re: [Sqlalchemy-users] Better Firebird patch and test
patches
Date sent: Tue, 30 May 2006 21:05:26 -0400
To: Brad Clements <[EMAIL PROTECTED]>
> ok what do you want here, dbengine://user:[EMAIL PROTECTED]:port/database?
> opt=val&opt=val ? as long as its good with RFC1738. did you send me
> a patch ? i lost track today. also how do you want to approach name
> conflicts between databases ? do you want to prefix each name with
> the drivername ? otherwise those URLs are still not agnostic.
I did not send a patch. I'm looking at the regex in url._parse_rfc1738_args and
trying to decide if I can just change it to..
pattern = re.compile(r'''
(\w+)://
(?:
([^:]*)
(?::(.*))?
@)?
(?:
([^/:]*)
(?::([^/]*))?
)?
(?:/[^?]*)?
(?:?(.*))?
'''
, re.X)
Not sure if I grok the pattern here correctly, but basically saying that the
database
part can have anything except '?'
and add a new optional group that comes after a '?'
then, if that match is true, that part will be passed through cgi.parse_qsl and
the
resultant dict stuck into the URL object as .. 'extra_args' or something like
that.
Regarding prefixing these extra args.. I don't see why that'd be necessary,
since
engines would have to pull out whatever args they're looking for from the URL
object, and an engine is only going to get args for which it was the named
'scheme' in the uri anyway.
so if two engines each look for a '?init=True', I can't see how that matters.
> all 273 tests in the trunk at the moment pass on mysql, postgres, and
> sqlite. tests that arent supported for a certain DB (like sequences
> for mysql) have an "unsupported" decorator for that database, so they
> pass too. so for any test, if for example 'sqlite' is not marked
> as unsupported, then that test passes on sqlite. if not, then
> something weird is going on, maybe your version of sqlite or
> something about the windows environment (i havent run the tests on
> windows in many weeks, perhaps its time to do that).
well, test/select.py fails as follows, I don't see any engine calls there or
any
firebird.py on the stack (wondering why postgres.dialect() is in there.
======================================================================
FAIL: testcast (__main__.SelectTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test\select.py", line 551, in testcast
check_results(postgres.dialect(), ['NUMERIC(10, 2)', 'NUMERIC(12, 9)', 'DATE
', 'TEXT', 'VARCHAR(20)'], '%(literal)s')
File "test\select.py", line 546, in check_results
self.assertEqual(str(cast(1234, TEXT).compile(dialect=dialect)), 'CAST(%s AS
%s)' %(literal, expected_results[3]))
AssertionError: 'CAST(:literal AS TEXT)' != 'CAST(%(literal)s AS TEXT)'
======================================================================
FAIL: testouterjoin (__main__.SelectTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test\select.py", line 484, in testouterjoin
dialect=postgres.dialect()
File "test\select.py", line 59, in runtest
self.assert_(cc == result, str(c) + "\n does not match \n" + result)
AssertionError: SELECT mytable.myid, mytable.name, mytable.description, myothert
able.otherid, myothertable.othername
FROM mytable LEFT OUTER JOIN myothertable ON mytable.myid = myothertable.otherid
WHERE mytable.name = :mytable_name AND mytable.myid = :mytable_myid AND myothert
able.othername != :myothertable_othername AND EXISTS (select yay from foo where
boo = lar)
does not match
SELECT mytable.myid, mytable.name, mytable.description, myothertable.otherid, my
othertable.othername FROM mytable LEFT OUTER JOIN myothertable ON mytable.myid =
myothertable.otherid WHERE mytable.name = %(mytable_name)s AND mytable.myid = %
(mytable_myid)s AND myothertable.othername != %(myothertable_othername)s AND EXI
STS (select yay from foo where boo = lar)
======================================================================
FAIL: testtextbinds (__main__.SelectTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test\select.py", line 305, in testtextbinds
dialect=dialect
File "test\select.py", line 59, in runtest
self.assert_(cc == result, str(c) + "\n does not match \n" + result)
AssertionError: select * from foo where lala=:bar and hoho=:whee
does not match
select * from foo where lala=%(bar)s and hoho=%(whee)s
----------------------------------------------------------------------
Ran 39 tests in 0.125s
FAILED (failures=3)
--
Brad Clements, [EMAIL PROTECTED] (315)268-1000
http://www.murkworks.com
AOL-IM or SKYPE: BKClements
-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users