$14 GRAYBYTE WORDPRESS FILE MANAGER $87

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/

HOME
Current File : /lib64/python2.7/site-packages/sqlalchemy/dialects/mysql//pyodbc.py
# dialects/mysql/pyodbc.py
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
# <see AUTHORS file>
#
# This module is part of SQLAlchemy and is released under
# the MIT License: https://www.opensource.org/licenses/mit-license.php

r"""


.. dialect:: mysql+pyodbc
    :name: PyODBC
    :dbapi: pyodbc
    :connectstring: mysql+pyodbc://<username>:<password>@<dsnname>
    :url: https://pypi.org/project/pyodbc/

.. note::

    The PyODBC for MySQL dialect is **not tested as part of
    SQLAlchemy's continuous integration**.
    The recommended MySQL dialects are mysqlclient and PyMySQL.
    However, if you want to use the mysql+pyodbc dialect and require
    full support for ``utf8mb4`` characters (including supplementary
    characters like emoji) be sure to use a current release of
    MySQL Connector/ODBC and specify the "ANSI" (**not** "Unicode")
    version of the driver in your DSN or connection string.

Pass through exact pyodbc connection string::

    import urllib
    connection_string = (
        'DRIVER=MySQL ODBC 8.0 ANSI Driver;'
        'SERVER=localhost;'
        'PORT=3307;'
        'DATABASE=mydb;'
        'UID=root;'
        'PWD=(whatever);'
        'charset=utf8mb4;'
    )
    params = urllib.parse.quote_plus(connection_string)
    connection_uri = "mysql+pyodbc:///?odbc_connect=%s" % params

"""  # noqa

import re

from .base import MySQLDialect
from .base import MySQLExecutionContext
from .types import TIME
from ... import exc
from ... import util
from ...connectors.pyodbc import PyODBCConnector
from ...sql.sqltypes import Time


class _pyodbcTIME(TIME):
    def result_processor(self, dialect, coltype):
        def process(value):
            # pyodbc returns a datetime.time object; no need to convert
            return value

        return process


class MySQLExecutionContext_pyodbc(MySQLExecutionContext):
    def get_lastrowid(self):
        cursor = self.create_cursor()
        cursor.execute("SELECT LAST_INSERT_ID()")
        lastrowid = cursor.fetchone()[0]
        cursor.close()
        return lastrowid


class MySQLDialect_pyodbc(PyODBCConnector, MySQLDialect):
    supports_statement_cache = True
    colspecs = util.update_copy(MySQLDialect.colspecs, {Time: _pyodbcTIME})
    supports_unicode_statements = True
    execution_ctx_cls = MySQLExecutionContext_pyodbc

    pyodbc_driver_name = "MySQL"

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

        # Prefer 'character_set_results' for the current connection over the
        # value in the driver.  SET NAMES or individual variable SETs will
        # change the charset without updating the driver's view of the world.
        #
        # If it's decided that issuing that sort of SQL leaves you SOL, then
        # this can prefer the driver value.

        # set this to None as _fetch_setting attempts to use it (None is OK)
        self._connection_charset = None
        try:
            value = self._fetch_setting(connection, "character_set_client")
            if value:
                return value
        except exc.DBAPIError:
            pass

        util.warn(
            "Could not detect the connection character set.  "
            "Assuming latin1."
        )
        return "latin1"

    def _get_server_version_info(self, connection):
        return MySQLDialect._get_server_version_info(self, connection)

    def _extract_error_code(self, exception):
        m = re.compile(r"\((\d+)\)").search(str(exception.args))
        c = m.group(1)
        if c:
            return int(c)
        else:
            return None

    def on_connect(self):
        super_ = super(MySQLDialect_pyodbc, self).on_connect()

        def on_connect(conn):
            if super_ is not None:
                super_(conn)

            # declare Unicode encoding for pyodbc as per
            #   https://github.com/mkleehammer/pyodbc/wiki/Unicode
            pyodbc_SQL_CHAR = 1  # pyodbc.SQL_CHAR
            pyodbc_SQL_WCHAR = -8  # pyodbc.SQL_WCHAR
            conn.setdecoding(pyodbc_SQL_CHAR, encoding="utf-8")
            conn.setdecoding(pyodbc_SQL_WCHAR, encoding="utf-8")
            conn.setencoding(encoding="utf-8")

        return on_connect


dialect = MySQLDialect_pyodbc

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
23 Sep 2024 10.41 AM
root / root
0755
__init__.py
2.147 KB
5 Sep 2024 10.50 PM
root / root
0644
__init__.pyc
2.592 KB
23 Sep 2024 10.41 AM
root / root
0644
aiomysql.py
9.313 KB
5 Sep 2024 10.50 PM
root / root
0644
asyncmy.py
9.443 KB
5 Sep 2024 10.50 PM
root / root
0644
base.py
112.675 KB
5 Sep 2024 10.50 PM
root / root
0644
base.pyc
108.136 KB
23 Sep 2024 10.41 AM
root / root
0644
cymysql.py
2.227 KB
5 Sep 2024 10.50 PM
root / root
0644
cymysql.pyc
3.12 KB
23 Sep 2024 10.41 AM
root / root
0644
dml.py
6.316 KB
5 Sep 2024 10.50 PM
root / root
0644
dml.pyc
6.414 KB
23 Sep 2024 10.41 AM
root / root
0644
enumerated.py
9.153 KB
5 Sep 2024 10.50 PM
root / root
0644
enumerated.pyc
9.959 KB
23 Sep 2024 10.41 AM
root / root
0644
expression.py
3.896 KB
5 Sep 2024 10.50 PM
root / root
0644
expression.pyc
4.366 KB
23 Sep 2024 10.41 AM
root / root
0644
json.py
2.268 KB
5 Sep 2024 10.50 PM
root / root
0644
json.pyc
3.476 KB
23 Sep 2024 10.41 AM
root / root
0644
mariadb.py
0.812 KB
5 Sep 2024 10.50 PM
root / root
0644
mariadb.pyc
1.024 KB
23 Sep 2024 10.41 AM
root / root
0644
mariadbconnector.py
7.395 KB
5 Sep 2024 10.50 PM
root / root
0644
mariadbconnector.pyc
8.521 KB
23 Sep 2024 10.41 AM
root / root
0644
mysqlconnector.py
7.519 KB
5 Sep 2024 10.50 PM
root / root
0644
mysqlconnector.pyc
9.853 KB
23 Sep 2024 10.41 AM
root / root
0644
mysqldb.py
9.797 KB
5 Sep 2024 10.50 PM
root / root
0644
mysqldb.pyc
10.525 KB
23 Sep 2024 10.41 AM
root / root
0644
oursql.py
8.332 KB
5 Sep 2024 10.50 PM
root / root
0644
oursql.pyc
10.027 KB
23 Sep 2024 10.41 AM
root / root
0644
provision.py
2.829 KB
5 Sep 2024 10.50 PM
root / root
0644
provision.pyc
2.584 KB
23 Sep 2024 10.41 AM
root / root
0644
pymysql.py
4.32 KB
5 Sep 2024 10.50 PM
root / root
0644
pymysql.pyc
4.745 KB
23 Sep 2024 10.41 AM
root / root
0644
pyodbc.py
4.198 KB
5 Sep 2024 10.50 PM
root / root
0644
pyodbc.pyc
4.935 KB
23 Sep 2024 10.41 AM
root / root
0644
reflection.py
18.431 KB
5 Sep 2024 10.50 PM
root / root
0644
reflection.pyc
15.017 KB
23 Sep 2024 10.41 AM
root / root
0644
reserved_words.py
8.899 KB
5 Sep 2024 10.50 PM
root / root
0644
reserved_words.pyc
6.491 KB
23 Sep 2024 10.41 AM
root / root
0644
types.py
24.096 KB
5 Sep 2024 10.50 PM
root / root
0644
types.pyc
31.641 KB
23 Sep 2024 10.41 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF