__init__.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. """
  2. MySQLdb - A DB API v2.0 compatible interface to MySQL.
  3. This package is a wrapper around _mysql, which mostly implements the
  4. MySQL C API.
  5. connect() -- connects to server
  6. See the C API specification and the MySQL documentation for more info
  7. on other items.
  8. For information on how MySQLdb handles type conversion, see the
  9. MySQLdb.converters module.
  10. """
  11. from .release import version_info
  12. from . import _mysql
  13. if version_info != _mysql.version_info:
  14. raise ImportError(
  15. f"this is MySQLdb version {version_info}, "
  16. f"but _mysql is version {_mysql.version_info!r}\n"
  17. f"_mysql: {_mysql.__file__!r}"
  18. )
  19. from ._mysql import (
  20. NotSupportedError,
  21. OperationalError,
  22. get_client_info,
  23. ProgrammingError,
  24. Error,
  25. InterfaceError,
  26. debug,
  27. IntegrityError,
  28. string_literal,
  29. MySQLError,
  30. DataError,
  31. DatabaseError,
  32. InternalError,
  33. Warning,
  34. )
  35. from MySQLdb.constants import FIELD_TYPE
  36. from MySQLdb.times import (
  37. Date,
  38. Time,
  39. Timestamp,
  40. DateFromTicks,
  41. TimeFromTicks,
  42. TimestampFromTicks,
  43. )
  44. threadsafety = 1
  45. apilevel = "2.0"
  46. paramstyle = "format"
  47. class DBAPISet(frozenset):
  48. """A special type of set for which A == x is true if A is a
  49. DBAPISet and x is a member of that set."""
  50. def __eq__(self, other):
  51. if isinstance(other, DBAPISet):
  52. return not self.difference(other)
  53. return other in self
  54. STRING = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
  55. BINARY = DBAPISet(
  56. [
  57. FIELD_TYPE.BLOB,
  58. FIELD_TYPE.LONG_BLOB,
  59. FIELD_TYPE.MEDIUM_BLOB,
  60. FIELD_TYPE.TINY_BLOB,
  61. ]
  62. )
  63. NUMBER = DBAPISet(
  64. [
  65. FIELD_TYPE.DECIMAL,
  66. FIELD_TYPE.DOUBLE,
  67. FIELD_TYPE.FLOAT,
  68. FIELD_TYPE.INT24,
  69. FIELD_TYPE.LONG,
  70. FIELD_TYPE.LONGLONG,
  71. FIELD_TYPE.TINY,
  72. FIELD_TYPE.YEAR,
  73. FIELD_TYPE.NEWDECIMAL,
  74. ]
  75. )
  76. DATE = DBAPISet([FIELD_TYPE.DATE])
  77. TIME = DBAPISet([FIELD_TYPE.TIME])
  78. TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME])
  79. DATETIME = TIMESTAMP
  80. ROWID = DBAPISet()
  81. def test_DBAPISet_set_equality():
  82. assert STRING == STRING
  83. def test_DBAPISet_set_inequality():
  84. assert STRING != NUMBER
  85. def test_DBAPISet_set_equality_membership():
  86. assert FIELD_TYPE.VAR_STRING == STRING
  87. def test_DBAPISet_set_inequality_membership():
  88. assert FIELD_TYPE.DATE != STRING
  89. def Binary(x):
  90. return bytes(x)
  91. def Connect(*args, **kwargs):
  92. """Factory function for connections.Connection."""
  93. from MySQLdb.connections import Connection
  94. return Connection(*args, **kwargs)
  95. connect = Connection = Connect
  96. __all__ = [
  97. "BINARY",
  98. "Binary",
  99. "Connect",
  100. "Connection",
  101. "DATE",
  102. "Date",
  103. "Time",
  104. "Timestamp",
  105. "DateFromTicks",
  106. "TimeFromTicks",
  107. "TimestampFromTicks",
  108. "DataError",
  109. "DatabaseError",
  110. "Error",
  111. "FIELD_TYPE",
  112. "IntegrityError",
  113. "InterfaceError",
  114. "InternalError",
  115. "MySQLError",
  116. "NUMBER",
  117. "NotSupportedError",
  118. "DBAPISet",
  119. "OperationalError",
  120. "ProgrammingError",
  121. "ROWID",
  122. "STRING",
  123. "TIME",
  124. "TIMESTAMP",
  125. "Warning",
  126. "apilevel",
  127. "connect",
  128. "connections",
  129. "constants",
  130. "converters",
  131. "cursors",
  132. "debug",
  133. "get_client_info",
  134. "paramstyle",
  135. "string_literal",
  136. "threadsafety",
  137. "version_info",
  138. ]