diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/connectors/mysqldb.py | 5 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/drizzle/base.py | 6 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/__init__.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/mysqldb.py | 7 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/pymysql.py | 38 |
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 |
