summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/connectors/mysqldb.py5
-rw-r--r--lib/sqlalchemy/dialects/drizzle/base.py6
-rw-r--r--lib/sqlalchemy/dialects/mysql/__init__.py2
-rw-r--r--lib/sqlalchemy/dialects/mysql/mysqldb.py7
-rw-r--r--lib/sqlalchemy/dialects/mysql/pymysql.py38
5 files changed, 49 insertions, 9 deletions
diff --git a/lib/sqlalchemy/connectors/mysqldb.py b/lib/sqlalchemy/connectors/mysqldb.py
index 7696cdb79..59744f228 100644
--- a/lib/sqlalchemy/connectors/mysqldb.py
+++ b/lib/sqlalchemy/connectors/mysqldb.py
@@ -48,6 +48,7 @@ class MySQLDBConnector(Connector):
@classmethod
def dbapi(cls):
+ # is overridden when pymysql is used
return __import__('MySQLdb')
def do_executemany(self, cursor, statement, parameters, context=None):
@@ -87,7 +88,9 @@ class MySQLDBConnector(Connector):
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'], 0).CLIENT
client_flag |= CLIENT_FLAGS.FOUND_ROWS
except:
pass
diff --git a/lib/sqlalchemy/dialects/drizzle/base.py b/lib/sqlalchemy/dialects/drizzle/base.py
index 5c268fb60..bec0562a9 100644
--- a/lib/sqlalchemy/dialects/drizzle/base.py
+++ b/lib/sqlalchemy/dialects/drizzle/base.py
@@ -1,8 +1,6 @@
-# -*- fill-column: 78 -*-
# drizzle/base.py
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Michael Bayer mike_mp@zzzcomputing.com
-# and Jason Kirtland.
-# Copyright (C) 2010 Monty Taylor <mordred@inaugust.com>
+# Copyright (C) 2005-2011 the SQLAlchemy authors and contributors <see AUTHORS file>
+# Copyright (C) 2010-2011 Monty Taylor <mordred@inaugust.com>
#
# This module is part of SQLAlchemy and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/lib/sqlalchemy/dialects/mysql/__init__.py b/lib/sqlalchemy/dialects/mysql/__init__.py
index fe1ef49b2..7cab573e3 100644
--- a/lib/sqlalchemy/dialects/mysql/__init__.py
+++ b/lib/sqlalchemy/dialects/mysql/__init__.py
@@ -5,7 +5,7 @@
# the MIT License: http://www.opensource.org/licenses/mit-license.php
from sqlalchemy.dialects.mysql import base, mysqldb, oursql, \
- pyodbc, zxjdbc, mysqlconnector
+ pyodbc, zxjdbc, mysqlconnector, pymysql
# default dialect
base.dialect = mysqldb.dialect
diff --git a/lib/sqlalchemy/dialects/mysql/mysqldb.py b/lib/sqlalchemy/dialects/mysql/mysqldb.py
index 003502b13..1b0ea85cb 100644
--- a/lib/sqlalchemy/dialects/mysql/mysqldb.py
+++ b/lib/sqlalchemy/dialects/mysql/mysqldb.py
@@ -41,10 +41,11 @@ strings, also pass ``use_unicode=0`` in the connection arguments::
Known Issues
-------------
-MySQL-python at least as of version 1.2.2 has a serious memory leak related
+MySQL-python version 1.2.2 has a serious memory leak related
to unicode conversion, a feature which is disabled via ``use_unicode=0``.
-The recommended connection form with SQLAlchemy is::
-
+Using a more recent version of MySQL-python is recommended. The
+recommended connection form with SQLAlchemy is::
+
engine = create_engine('mysql://scott:tiger@localhost/test?charset=utf8&use_unicode=0', pool_recycle=3600)
diff --git a/lib/sqlalchemy/dialects/mysql/pymysql.py b/lib/sqlalchemy/dialects/mysql/pymysql.py
new file mode 100644
index 000000000..dee3dfeaa
--- /dev/null
+++ b/lib/sqlalchemy/dialects/mysql/pymysql.py
@@ -0,0 +1,38 @@
+# mysql/pymysql.py
+# Copyright (C) 2005-2011 the SQLAlchemy authors and contributors <see AUTHORS file>
+#
+# This module is part of SQLAlchemy and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+"""Support for the MySQL database via the pymysql adapter.
+
+pymysql is available at:
+
+ http://code.google.com/p/pymysql/
+
+Connecting
+----------
+
+Connect string::
+
+ mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
+
+MySQL-Python Compatibility
+--------------------------
+
+The pymysql DBAPI is a pure Python port of the MySQL-python (MySQLdb) driver,
+and targets 100% compatibility. Most behavioral notes for MySQL-python apply to
+the pymysql driver as well.
+
+"""
+
+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 \ No newline at end of file