Exemple #1
0
def _init_events(engine, mysql_sql_mode=None, **kw):
    """Set up event listeners for MySQL."""

    if mysql_sql_mode is not None:
        @sqlalchemy.event.listens_for(engine, "connect")
        def _set_session_sql_mode(dbapi_con, connection_rec):
            cursor = dbapi_con.cursor()
            cursor.execute("SET SESSION sql_mode = %s", [mysql_sql_mode])

    @sqlalchemy.event.listens_for(engine, "first_connect")
    def _check_effective_sql_mode(dbapi_con, connection_rec):
        if mysql_sql_mode is not None:
            _set_session_sql_mode(dbapi_con, connection_rec)

        cursor = dbapi_con.cursor()
        cursor.execute("SHOW VARIABLES LIKE 'sql_mode'")
        realmode = cursor.fetchone()

        if realmode is None:
            LOG.warning('Unable to detect effective SQL mode')
        else:
            realmode = realmode[1]
            LOG.debug('MySQL server mode set to %s', realmode)
            if 'TRADITIONAL' not in realmode.upper() and \
                    'STRICT_ALL_TABLES' not in realmode.upper():
                LOG.warning(
                    "MySQL SQL mode is '%s', "
                    "consider enabling TRADITIONAL or STRICT_ALL_TABLES",
                    realmode)

    if ndb.ndb_status(engine):
        ndb.init_ndb_events(engine)
Exemple #2
0
def _init_events(engine, mysql_sql_mode=None, **kw):
    """Set up event listeners for MySQL."""

    if mysql_sql_mode is not None:
        @sqlalchemy.event.listens_for(engine, "connect")
        def _set_session_sql_mode(dbapi_con, connection_rec):
            cursor = dbapi_con.cursor()
            cursor.execute("SET SESSION sql_mode = %s", [mysql_sql_mode])

    @sqlalchemy.event.listens_for(engine, "first_connect")
    def _check_effective_sql_mode(dbapi_con, connection_rec):
        if mysql_sql_mode is not None:
            _set_session_sql_mode(dbapi_con, connection_rec)

        cursor = dbapi_con.cursor()
        cursor.execute("SHOW VARIABLES LIKE 'sql_mode'")
        realmode = cursor.fetchone()

        if realmode is None:
            LOG.warning('Unable to detect effective SQL mode')
        else:
            realmode = realmode[1]
            LOG.debug('MySQL server mode set to %s', realmode)
            if 'TRADITIONAL' not in realmode.upper() and \
                    'STRICT_ALL_TABLES' not in realmode.upper():
                LOG.warning(
                    "MySQL SQL mode is '%s', "
                    "consider enabling TRADITIONAL or STRICT_ALL_TABLES",
                    realmode)

    if ndb.ndb_status(engine):
        ndb.init_ndb_events(engine)
Exemple #3
0
    def setUp(self):
        super(NDBMockTestBase, self).setUp()
        mock_dbapi = mock.Mock()
        self.test_engine = test_engine = create_engine(_MOCK_CONNECTION,
                                                       module=mock_dbapi)
        test_engine.dialect._oslodb_enable_ndb_support = True

        self.addCleanup(setattr, test_engine.dialect,
                        "_oslodb_enable_ndb_support", False)
        ndb.init_ndb_events(test_engine)
Exemple #4
0
    def setUp(self):
        super(NDBMockTestBase, self).setUp()
        mock_dbapi = mock.Mock()
        self.test_engine = test_engine = create_engine(
            _MOCK_CONNECTION, module=mock_dbapi)
        test_engine.dialect._oslodb_enable_ndb_support = True

        self.addCleanup(
            setattr, test_engine.dialect, "_oslodb_enable_ndb_support", False
        )
        ndb.init_ndb_events(test_engine)