예제 #1
0
    def __init__(self, conn_params, information_schema=None):
        # replace date, datetime, timstamp decoders so they're not decoded into date objects
        custom_decoders = decoders.copy()
        custom_decoders[7] = through
        custom_decoders[10] = through
        custom_decoders[11] = through
        custom_decoders[12] = through

        conn_params['conv'] = custom_decoders
        self.connection = pymysql.connect(**conn_params)
        self.cursor = self.connection.cursor()
        self.skip_pre_sql = False
        if information_schema is not None:
            self.information_schema = information_schema
예제 #2
0
파일: sqlexecute.py 프로젝트: dbcli/mycli
import logging
import pymysql
import sqlparse
from .packages import special
from pymysql.constants import FIELD_TYPE
from pymysql.converters import (convert_mysql_timestamp, convert_datetime,
                                convert_timedelta, convert_date, conversions,
                                decoders)
try:
    import paramiko
except:
    paramiko = False

_logger = logging.getLogger(__name__)

FIELD_TYPES = decoders.copy()
FIELD_TYPES.update({
    FIELD_TYPE.NULL: type(None)
})

class SQLExecute(object):

    databases_query = '''SHOW DATABASES'''

    tables_query = '''SHOW TABLES'''

    version_query = '''SELECT @@VERSION'''

    version_comment_query = '''SELECT @@VERSION_COMMENT'''
    version_comment_query_mysql4 = '''SHOW VARIABLES LIKE "version_comment"'''
예제 #3
0
import logging
import pymysql
import sqlparse
from .packages import special
from pymysql.constants import FIELD_TYPE
from pymysql.converters import (convert_datetime,
                                convert_timedelta, convert_date, conversions,
                                decoders)
try:
    import paramiko
except ImportError:
    from mycli.packages.paramiko_stub import paramiko

_logger = logging.getLogger(__name__)

FIELD_TYPES = decoders.copy()
FIELD_TYPES.update({
    FIELD_TYPE.NULL: type(None)
})

class SQLExecute(object):

    databases_query = '''SHOW DATABASES'''

    tables_query = '''SHOW TABLES'''

    version_query = '''SELECT @@VERSION'''

    version_comment_query = '''SELECT @@VERSION_COMMENT'''
    version_comment_query_mysql4 = '''SHOW VARIABLES LIKE "version_comment"'''
예제 #4
0
# Raise exceptions for database warnings if DEBUG is on
from django.conf import settings
if settings.DEBUG:
    from warnings import filterwarnings
    filterwarnings("error", category=Database.Warning)

DatabaseError = Database.DatabaseError
IntegrityError = Database.IntegrityError

# PyMySQL raises an InternalError with error 1048 (BAD_NULL) -- here we patch
# the error map to force an IntegrityError instead.
from pymysql.err import error_map
error_map[1048] = IntegrityError

django_conversions = decoders.copy()
# It's impossible to import datetime_or_None directly from MySQLdb.times
datetime_or_None = decoders[FIELD_TYPE.DATETIME]

# As with the MySQLdb adapter, PyMySQL returns TIME columns as timedelta --
# so we add a conversion here
def datetime_or_None_with_timezone_support(obj):
    dt = datetime_or_None(obj)
    # Confirm that dt is naive before overwriting its tzinfo.
    if dt is not None and settings.USE_TZ and is_naive(dt):
        dt = dt.replace(tzinfo=utc)
    return dt

django_conversions.update({
    FIELD_TYPE.TIME: backend_utils.typecast_time,
    FIELD_TYPE.DECIMAL: backend_utils.typecast_decimal,