Oops, actually we need to add the level=0 argument to __import__ in
mysqldb.py, otherwise we end up importing from sqlalchemy/dialects/
mysql/pymysq.py and get an ImportError.
As the exception is trapped, the result is that the FOUND_ROWS flag
was not set and some tests (e.g. test_update_rowcount2) were failing.
Sorry about that :\

+                CLIENT_FLAGS = __import__(self.dbapi.__package__
+'.constants',
+                                          globals(), locals(),
+                                          ['CLIENT'], 0).CLIENT

> The "module" argument would indeed work fine, but the mysqldb.py part
> of the patch is still needed to avoid direct dependency on MySQLdb.
> Anyway being able to explicitly (mysql+pymysql) choose the dialect
> will be great.
> Thanks !
>
> On 2 déc, 15:49, Michael Bayer <[email protected]> wrote:
>
> > This is an easy add for 0.6.6 so I've added ticket #1991.   If the module 
> > is truly a drop-in replacement, you could also have users send pymysql in 
> > as the "module" argument to create_engine().  
>
> > On Dec 2, 2010, at 9:26 AM, Evax Software wrote:
>
> > > Hi,
>
> > > Although not part of the PyMySQL team, we're interested in getting
> > > PyMySQL support in SQLAlchemy.
>
> > > We already published a package for this:
> > >http://pypi.python.org/pypi/pymysql_sa/1.0
>
> > > As PyMySQL's goal is to be a drop-in replacement for MySQLdb, it would
> > > be nice to eventually get it to comply with the whole SQLAlchemy test
> > > suite.
>
> > > Here's a small patch adding the PyMySQL dialect directly to
> > > SQLAlchemy:
>
> > > diff -r b29164cca942 lib/sqlalchemy/dialects/mysql/__init__.py
> > > --- a/lib/sqlalchemy/dialects/mysql/__init__.py    Tue Nov 30 13:55:17
> > > 2010 -0500
> > > +++ b/lib/sqlalchemy/dialects/mysql/__init__.py    Thu Dec 02 15:06:43
> > > 2010 +0100
> > > @@ -1,5 +1,5 @@
> > > from sqlalchemy.dialects.mysql import base, mysqldb, oursql, \
> > > -                                pyodbc, zxjdbc, mysqlconnector
> > > +                                pyodbc, zxjdbc, mysqlconnector,
> > > pymysql
>
> > > # default dialect
> > > base.dialect = mysqldb.dialect
> > > diff -r b29164cca942 lib/sqlalchemy/dialects/mysql/mysqldb.py
> > > --- a/lib/sqlalchemy/dialects/mysql/mysqldb.py     Tue Nov 30 13:55:17
> > > 2010 -0500
> > > +++ b/lib/sqlalchemy/dialects/mysql/mysqldb.py     Thu Dec 02 15:06:43
> > > 2010 +0100
> > > @@ -137,7 +137,9 @@
> > >         client_flag = opts.get('client_flag', 0)
> > >         if self.dbapi is not None:
> > >             try:
> > > -                from MySQLdb.constants import CLIENT as CLIENT_FLAGS
> > > +                CLIENT_FLAGS = __import__(self.dbapi.__package__
> > > +'.constants',
> > > +                                          globals(), locals(),
> > > +                                          ['CLIENT']).CLIENT
> > >                 client_flag |= CLIENT_FLAGS.FOUND_ROWS
> > >             except:
> > >                 pass
> > > diff -r b29164cca942 lib/sqlalchemy/dialects/mysql/pymysql.py
> > > --- /dev/null      Thu Jan 01 00:00:00 1970 +0000
> > > +++ b/lib/sqlalchemy/dialects/mysql/pymysql.py     Thu Dec 02 15:06:43
> > > 2010 +0100
> > > @@ -0,0 +1,10 @@
> > > +from sqlalchemy.dialects.mysql.mysqldb import MySQLDialect_mysqldb
> > > +
> > > +class MySQLDialect_pymysql(MySQLDialect_mysqldb):
> > > +    driver = 'pymysql'
> > > +
> > > +   �...@classmethod
> > > +    def dbapi(cls):
> > > +        return __import__('pymysql')
> > > +
> > > +dialect = MySQLDialect_pymysql
>
> > > --
> > > Evax Software
>
> > > --
> > > You received this message because you are subscribed to the Google Groups 
> > > "sqlalchemy" 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 
> > > athttp://groups.google.com/group/sqlalchemy?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" 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/sqlalchemy?hl=en.

Reply via email to