aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/SQLAlchemy-0.7.0-py2.7-linux-x86_64.egg/sqlalchemy/dialects/drizzle/mysqldb.py
blob: dcf02609e59de01ceddc53fa4be3a45543a5d4bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""Support for the Drizzle database via the Drizzle-python adapter.

Drizzle-Python is available at:

    http://sourceforge.net/projects/mysql-python

At least version 1.2.1 or 1.2.2 should be used.

Connecting
-----------

Connect string format::

    drizzle+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>

Character Sets
--------------

Drizzle is all utf8 all the time.

Known Issues
-------------

Drizzle-python at least as of 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::

    engine = create_engine('mysql://scott:tiger@localhost/test?charset=utf8&use_unicode=0', pool_recycle=3600)


"""

from sqlalchemy.dialects.drizzle.base import (DrizzleDialect, 
                                DrizzleExecutionContext,
                                DrizzleCompiler, DrizzleIdentifierPreparer)
from sqlalchemy.connectors.mysqldb import (
                        MySQLDBExecutionContext, 
                        MySQLDBCompiler, 
                        MySQLDBIdentifierPreparer, 
                        MySQLDBConnector
                    )

class DrizzleExecutionContext_mysqldb(
                        MySQLDBExecutionContext, 
                        DrizzleExecutionContext):
    pass


class DrizzleCompiler_mysqldb(MySQLDBCompiler, DrizzleCompiler):
    pass


class DrizzleIdentifierPreparer_mysqldb(
                        MySQLDBIdentifierPreparer, 
                        DrizzleIdentifierPreparer):
    pass

class DrizzleDialect_mysqldb(MySQLDBConnector, DrizzleDialect):
    execution_ctx_cls = DrizzleExecutionContext_mysqldb
    statement_compiler = DrizzleCompiler_mysqldb
    preparer = DrizzleIdentifierPreparer_mysqldb

    def _detect_charset(self, connection):
        """Sniff out the character set in use for connection results."""
        return 'utf8'


dialect = DrizzleDialect_mysqldb