Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1""" 

2MySQLdb - A DB API v2.0 compatible interface to MySQL. 

3 

4This package is a wrapper around _mysql, which mostly implements the 

5MySQL C API. 

6 

7connect() -- connects to server 

8 

9See the C API specification and the MySQL documentation for more info 

10on other items. 

11 

12For information on how MySQLdb handles type conversion, see the 

13MySQLdb.converters module. 

14""" 

15 

16try: 

17 from MySQLdb.release import version_info 

18 from . import _mysql 

19 

20 assert version_info == _mysql.version_info 

21except Exception: 

22 raise ImportError( 

23 "this is MySQLdb version {}, but _mysql is version {!r}\n_mysql: {!r}".format( 

24 version_info, _mysql.version_info, _mysql.__file__ 

25 ) 

26 ) 

27 

28 

29from ._mysql import ( 

30 NotSupportedError, 

31 OperationalError, 

32 get_client_info, 

33 ProgrammingError, 

34 Error, 

35 InterfaceError, 

36 debug, 

37 IntegrityError, 

38 string_literal, 

39 MySQLError, 

40 DataError, 

41 escape, 

42 escape_string, 

43 DatabaseError, 

44 InternalError, 

45 Warning, 

46) 

47from MySQLdb.constants import FIELD_TYPE 

48from MySQLdb.times import ( 

49 Date, 

50 Time, 

51 Timestamp, 

52 DateFromTicks, 

53 TimeFromTicks, 

54 TimestampFromTicks, 

55) 

56 

57try: 

58 frozenset 

59except NameError: 

60 from sets import ImmutableSet as frozenset 

61 

62threadsafety = 1 

63apilevel = "2.0" 

64paramstyle = "format" 

65 

66 

67class DBAPISet(frozenset): 

68 """A special type of set for which A == x is true if A is a 

69 DBAPISet and x is a member of that set.""" 

70 

71 def __eq__(self, other): 

72 if isinstance(other, DBAPISet): 

73 return not self.difference(other) 

74 return other in self 

75 

76 

77STRING = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING]) 

78BINARY = DBAPISet( 

79 [ 

80 FIELD_TYPE.BLOB, 

81 FIELD_TYPE.LONG_BLOB, 

82 FIELD_TYPE.MEDIUM_BLOB, 

83 FIELD_TYPE.TINY_BLOB, 

84 ] 

85) 

86NUMBER = DBAPISet( 

87 [ 

88 FIELD_TYPE.DECIMAL, 

89 FIELD_TYPE.DOUBLE, 

90 FIELD_TYPE.FLOAT, 

91 FIELD_TYPE.INT24, 

92 FIELD_TYPE.LONG, 

93 FIELD_TYPE.LONGLONG, 

94 FIELD_TYPE.TINY, 

95 FIELD_TYPE.YEAR, 

96 FIELD_TYPE.NEWDECIMAL, 

97 ] 

98) 

99DATE = DBAPISet([FIELD_TYPE.DATE]) 

100TIME = DBAPISet([FIELD_TYPE.TIME]) 

101TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME]) 

102DATETIME = TIMESTAMP 

103ROWID = DBAPISet() 

104 

105 

106def test_DBAPISet_set_equality(): 

107 assert STRING == STRING 

108 

109 

110def test_DBAPISet_set_inequality(): 

111 assert STRING != NUMBER 

112 

113 

114def test_DBAPISet_set_equality_membership(): 

115 assert FIELD_TYPE.VAR_STRING == STRING 

116 

117 

118def test_DBAPISet_set_inequality_membership(): 

119 assert FIELD_TYPE.DATE != STRING 

120 

121 

122def Binary(x): 

123 return bytes(x) 

124 

125 

126def Connect(*args, **kwargs): 

127 """Factory function for connections.Connection.""" 

128 from MySQLdb.connections import Connection 

129 

130 return Connection(*args, **kwargs) 

131 

132 

133connect = Connection = Connect 

134 

135__all__ = [ 

136 "BINARY", 

137 "Binary", 

138 "Connect", 

139 "Connection", 

140 "DATE", 

141 "Date", 

142 "Time", 

143 "Timestamp", 

144 "DateFromTicks", 

145 "TimeFromTicks", 

146 "TimestampFromTicks", 

147 "DataError", 

148 "DatabaseError", 

149 "Error", 

150 "FIELD_TYPE", 

151 "IntegrityError", 

152 "InterfaceError", 

153 "InternalError", 

154 "MySQLError", 

155 "NUMBER", 

156 "NotSupportedError", 

157 "DBAPISet", 

158 "OperationalError", 

159 "ProgrammingError", 

160 "ROWID", 

161 "STRING", 

162 "TIME", 

163 "TIMESTAMP", 

164 "Warning", 

165 "apilevel", 

166 "connect", 

167 "connections", 

168 "constants", 

169 "converters", 

170 "cursors", 

171 "debug", 

172 "escape", 

173 "escape_string", 

174 "get_client_info", 

175 "paramstyle", 

176 "string_literal", 

177 "threadsafety", 

178 "version_info", 

179]