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 at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to