Add config parser to handle quotes in default file.
This commit is contained in:
		@@ -31,6 +31,7 @@ from .converters import escape_dict, escape_sequence, escape_string
 | 
				
			|||||||
from .err import Warning, Error, InterfaceError, DataError, \
 | 
					from .err import Warning, Error, InterfaceError, DataError, \
 | 
				
			||||||
     DatabaseError, OperationalError, IntegrityError, InternalError, \
 | 
					     DatabaseError, OperationalError, IntegrityError, InternalError, \
 | 
				
			||||||
     NotSupportedError, ProgrammingError, MySQLError
 | 
					     NotSupportedError, ProgrammingError, MySQLError
 | 
				
			||||||
 | 
					from .parsers import DefaultFileParser
 | 
				
			||||||
from .times import Date, Time, Timestamp, \
 | 
					from .times import Date, Time, Timestamp, \
 | 
				
			||||||
    DateFromTicks, TimeFromTicks, TimestampFromTicks
 | 
					    DateFromTicks, TimeFromTicks, TimestampFromTicks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -119,7 +120,7 @@ def install_as_MySQLdb():
 | 
				
			|||||||
__all__ = [
 | 
					__all__ = [
 | 
				
			||||||
    'BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'Date',
 | 
					    'BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'Date',
 | 
				
			||||||
    'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks', 'TimestampFromTicks',
 | 
					    'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks', 'TimestampFromTicks',
 | 
				
			||||||
    'DataError', 'DatabaseError', 'Error', 'FIELD_TYPE', 'IntegrityError',
 | 
					    'DataError', 'DatabaseError', 'DefaultFileParser', 'Error', 'FIELD_TYPE', 'IntegrityError',
 | 
				
			||||||
    'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER',
 | 
					    'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER',
 | 
				
			||||||
    'NotSupportedError', 'DBAPISet', 'OperationalError', 'ProgrammingError',
 | 
					    'NotSupportedError', 'DBAPISet', 'OperationalError', 'ProgrammingError',
 | 
				
			||||||
    'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Warning', 'apilevel', 'connect',
 | 
					    'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Warning', 'apilevel', 'connect',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,11 +17,12 @@ import traceback
 | 
				
			|||||||
import warnings
 | 
					import warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .charset import MBLENGTH, charset_by_name, charset_by_id
 | 
					from .charset import MBLENGTH, charset_by_name, charset_by_id
 | 
				
			||||||
from .cursors import Cursor
 | 
					 | 
				
			||||||
from .constants import CLIENT, COMMAND, FIELD_TYPE, SERVER_STATUS
 | 
					from .constants import CLIENT, COMMAND, FIELD_TYPE, SERVER_STATUS
 | 
				
			||||||
from .util import byte2int, int2byte
 | 
					 | 
				
			||||||
from .converters import (
 | 
					from .converters import (
 | 
				
			||||||
    escape_item, encoders, decoders, escape_string, through)
 | 
					    escape_item, encoders, decoders, escape_string, through)
 | 
				
			||||||
 | 
					from .cursors import Cursor
 | 
				
			||||||
 | 
					from .parsers import DefaultFileParser
 | 
				
			||||||
 | 
					from .util import byte2int, int2byte
 | 
				
			||||||
from . import err
 | 
					from . import err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
@@ -31,11 +32,6 @@ except ImportError:
 | 
				
			|||||||
    ssl = None
 | 
					    ssl = None
 | 
				
			||||||
    SSL_ENABLED = False
 | 
					    SSL_ENABLED = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if PY2:
 | 
					 | 
				
			||||||
    import ConfigParser as configparser
 | 
					 | 
				
			||||||
else:
 | 
					 | 
				
			||||||
    import configparser
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
    import getpass
 | 
					    import getpass
 | 
				
			||||||
    DEFAULT_USER = getpass.getuser()
 | 
					    DEFAULT_USER = getpass.getuser()
 | 
				
			||||||
@@ -596,7 +592,7 @@ class Connection(object):
 | 
				
			|||||||
            if not read_default_group:
 | 
					            if not read_default_group:
 | 
				
			||||||
                read_default_group = "client"
 | 
					                read_default_group = "client"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            cfg = configparser.RawConfigParser()
 | 
					            cfg = DefaultFileParser()
 | 
				
			||||||
            cfg.read(os.path.expanduser(read_default_file))
 | 
					            cfg.read(os.path.expanduser(read_default_file))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            def _config(key, arg):
 | 
					            def _config(key, arg):
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								pymysql/parsers.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								pymysql/parsers.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					from ._compat import PY2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if PY2:
 | 
				
			||||||
 | 
					    import ConfigParser as configparser
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    import configparser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class DefaultFileParser(configparser.RawConfigParser):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __remove_quotes(self, value):
 | 
				
			||||||
 | 
					        quotes = ["'", "\""]
 | 
				
			||||||
 | 
					        for quote in quotes:
 | 
				
			||||||
 | 
					            if value[0] == quote and value[-1] == quote:
 | 
				
			||||||
 | 
					                return value.strip(quote)
 | 
				
			||||||
 | 
					        return value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get(self, section, option):
 | 
				
			||||||
 | 
					        value = configparser.RawConfigParser.get(self, section, option)
 | 
				
			||||||
 | 
					        return self.__remove_quotes(value)
 | 
				
			||||||
		Reference in New Issue
	
	Block a user