Ticket #5120: mysql-params-5120-4.patch
| File mysql-params-5120-4.patch, 2.7 KB (added by thijstriemstra, 17 months ago) |
|---|
-
trac/db/mysql_backend.py
63 63 64 64 Database URLs should be of the form: 65 65 {{{ 66 mysql://user[:password]@host[:port]/database 66 mysql://user[:password]@host[:port]/database[?param1=value¶m2=value] 67 67 }}} 68 68 """ 69 69 implements(IDatabaseConnector) … … 186 186 db_name = os.path.basename(db_prop['path']) 187 187 188 188 args = [self.mysqldump_path] 189 for param in ['read_default_file', 'named_pipe', 'compress', 190 'unix_socket']: 191 if 'params' in db_prop and param in db_prop['params']: 192 val = db_prop['params'][param] 193 if param == 'compress' and val == 1: 194 args.extend(['--compress']) 195 elif param == 'unix_socket': 196 args.extend(['--socket', val]) 197 args.extend(['--protocol', 'socket']) 198 elif param == 'named_pipe' and val == 1: 199 args.extend(['--protocol', 'pipe']) 200 elif param == 'read_default_file': 201 args.extend(['--defaults-file=', val]) 189 202 if 'host' in db_prop: 190 203 args.extend(['-h', db_prop['host']]) 191 204 if 'port' in db_prop: … … 193 206 if 'user' in db_prop: 194 207 args.extend(['-u', db_prop['user']]) 195 208 args.extend(['-r', dest_file, db_name]) 196 197 209 environ = os.environ.copy() 198 210 if 'password' in db_prop: 199 211 environ['MYSQL_PWD'] = str(db_prop['password']) … … 225 237 password = '' 226 238 if port == None: 227 239 port = 3306 228 cnx = MySQLdb.connect(db=path, user=user, passwd=password, 229 host=host, port=port, charset='utf8') 240 opt = {} 241 for param in ['compress', 'named_pipe', 'init_command', 242 'read_default_file', 'read_default_group', 243 'unix_socket']: 244 if params.has_key(param): 245 val = params[param] 246 if param in ('compress', 'named_pipe'): 247 try: 248 opt[param] = int(val) 249 except ValueError: 250 pass 251 else: 252 opt[param] = val 253 cnx = MySQLdb.connect(db=path, user=user, passwd=password, host=host, 254 port=port, charset='utf8', **opt) 230 255 if hasattr(cnx, 'encoders'): 231 256 # 'encoders' undocumented but present since 1.2.1 (r422) 232 257 cnx.encoders[Markup] = cnx.encoders[types.UnicodeType]
