133 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| PyMySQL: A pure-Python MySQL client library.
 | |
| 
 | |
| Copyright (c) 2010-2016 PyMySQL contributors
 | |
| 
 | |
| Permission is hereby granted, free of charge, to any person obtaining a copy
 | |
| of this software and associated documentation files (the "Software"), to deal
 | |
| in the Software without restriction, including without limitation the rights
 | |
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | |
| copies of the Software, and to permit persons to whom the Software is
 | |
| furnished to do so, subject to the following conditions:
 | |
| 
 | |
| The above copyright notice and this permission notice shall be included in
 | |
| all copies or substantial portions of the Software.
 | |
| 
 | |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | |
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | |
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | |
| THE SOFTWARE.
 | |
| """
 | |
| import sys
 | |
| 
 | |
| from ._compat import PY2
 | |
| from .constants import FIELD_TYPE
 | |
| from .converters import escape_dict, escape_sequence, escape_string
 | |
| from .err import Warning, Error, InterfaceError, DataError, \
 | |
|      DatabaseError, OperationalError, IntegrityError, InternalError, \
 | |
|      NotSupportedError, ProgrammingError, MySQLError
 | |
| from .times import Date, Time, Timestamp, \
 | |
|     DateFromTicks, TimeFromTicks, TimestampFromTicks
 | |
| 
 | |
| 
 | |
| VERSION = (0, 7, 6, None)
 | |
| threadsafety = 1
 | |
| apilevel = "2.0"
 | |
| paramstyle = "pyformat"
 | |
| 
 | |
| 
 | |
| class DBAPISet(frozenset):
 | |
| 
 | |
|     def __ne__(self, other):
 | |
|         if isinstance(other, set):
 | |
|             return frozenset.__ne__(self, other)
 | |
|         else:
 | |
|             return other not in self
 | |
| 
 | |
|     def __eq__(self, other):
 | |
|         if isinstance(other, frozenset):
 | |
|             return frozenset.__eq__(self, other)
 | |
|         else:
 | |
|             return other in self
 | |
| 
 | |
|     def __hash__(self):
 | |
|         return frozenset.__hash__(self)
 | |
| 
 | |
| 
 | |
| STRING    = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING,
 | |
|                      FIELD_TYPE.VAR_STRING])
 | |
| BINARY    = DBAPISet([FIELD_TYPE.BLOB, FIELD_TYPE.LONG_BLOB,
 | |
|                      FIELD_TYPE.MEDIUM_BLOB, FIELD_TYPE.TINY_BLOB])
 | |
| NUMBER    = DBAPISet([FIELD_TYPE.DECIMAL, FIELD_TYPE.DOUBLE, FIELD_TYPE.FLOAT,
 | |
|                      FIELD_TYPE.INT24, FIELD_TYPE.LONG, FIELD_TYPE.LONGLONG,
 | |
|                      FIELD_TYPE.TINY, FIELD_TYPE.YEAR])
 | |
| DATE      = DBAPISet([FIELD_TYPE.DATE, FIELD_TYPE.NEWDATE])
 | |
| TIME      = DBAPISet([FIELD_TYPE.TIME])
 | |
| TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME])
 | |
| DATETIME  = TIMESTAMP
 | |
| ROWID     = DBAPISet()
 | |
| 
 | |
| 
 | |
| def Binary(x):
 | |
|     """Return x as a binary type."""
 | |
|     if PY2:
 | |
|         return bytearray(x)
 | |
|     else:
 | |
|         return bytes(x)
 | |
| 
 | |
| 
 | |
| def Connect(*args, **kwargs):
 | |
|     """
 | |
|     Connect to the database; see connections.Connection.__init__() for
 | |
|     more information.
 | |
|     """
 | |
|     from .connections import Connection
 | |
|     return Connection(*args, **kwargs)
 | |
| 
 | |
| from pymysql import connections as _orig_conn
 | |
| if _orig_conn.Connection.__init__.__doc__ is not None:
 | |
|     Connect.__doc__ = _orig_conn.Connection.__init__.__doc__
 | |
| del _orig_conn
 | |
| 
 | |
| 
 | |
| def get_client_info():  # for MySQLdb compatibility
 | |
|     return '.'.join(map(str, VERSION))
 | |
| 
 | |
| connect = Connection = Connect
 | |
| 
 | |
| # we include a doctored version_info here for MySQLdb compatibility
 | |
| version_info = (1,2,6,"final",0)
 | |
| 
 | |
| NULL = "NULL"
 | |
| 
 | |
| __version__ = get_client_info()
 | |
| 
 | |
| def thread_safe():
 | |
|     return True  # match MySQLdb.thread_safe()
 | |
| 
 | |
| def install_as_MySQLdb():
 | |
|     """
 | |
|     After this function is called, any application that imports MySQLdb or
 | |
|     _mysql will unwittingly actually use
 | |
|     """
 | |
|     sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"]
 | |
| 
 | |
| 
 | |
| __all__ = [
 | |
|     'BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'Date',
 | |
|     'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks', 'TimestampFromTicks',
 | |
|     'DataError', 'DatabaseError', 'Error', 'FIELD_TYPE', 'IntegrityError',
 | |
|     'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER',
 | |
|     'NotSupportedError', 'DBAPISet', 'OperationalError', 'ProgrammingError',
 | |
|     'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Warning', 'apilevel', 'connect',
 | |
|     'connections', 'constants', 'converters', 'cursors',
 | |
|     'escape_dict', 'escape_sequence', 'escape_string', 'get_client_info',
 | |
|     'paramstyle', 'threadsafety', 'version_info',
 | |
| 
 | |
|     "install_as_MySQLdb",
 | |
|     "NULL", "__version__",
 | |
| ]
 | 
