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
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"'''
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"'''
# 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,