1

我在我的 MySQL 服务器上进行了压缩,我想确保 Django 正在建立压缩连接。我怎样才能做到这一点?

4

2 回答 2

5

试验、错误和推理表明解决方案是在字典中使用compress设置为的字段:TrueOPTIONS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        ...
        'OPTIONS': {
            'compress': True
        }        
    }
}

我无法确认连接实际上是压缩的。

于 2013-02-16T11:30:08.327 回答
1

/django/db/backends/mysql/base.py对 Django 1.3的粗略(无双关语)检查:

298     def _cursor(self):                                                          
299         if not self._valid_connection():                                        
300             kwargs = {                                                          
301                 'conv': django_conversions,                                     
302                 'charset': 'utf8',                                              
303                 'use_unicode': True,                                            
304             }                                                                   
305             settings_dict = self.settings_dict                                  
306             if settings_dict['USER']:                                           
307                 kwargs['user'] = settings_dict['USER']                          
308             if settings_dict['NAME']:                                           
309                 kwargs['db'] = settings_dict['NAME']                            
310             if settings_dict['PASSWORD']:                                       
311                 kwargs['passwd'] = settings_dict['PASSWORD']                    
312             if settings_dict['HOST'].startswith('/'):                           
313                 kwargs['unix_socket'] = settings_dict['HOST']                   
314             elif settings_dict['HOST']:                                         
315                 kwargs['host'] = settings_dict['HOST']                          
316             if settings_dict['PORT']:                                           
317                 kwargs['port'] = int(settings_dict['PORT'])                     
318             # We need the number of potentially affected rows after an          
319             # "UPDATE", not the number of changed rows.                         
320             kwargs['client_flag'] = CLIENT.FOUND_ROWS                           
321             kwargs.update(settings_dict['OPTIONS'])                             
322             self.connection = Database.connect(**kwargs)                        
323             self.connection.encoders[SafeUnicode] = self.connection.encoders[unicode]
324             self.connection.encoders[SafeString] = self.connection.encoders[str]
325             connection_created.send(sender=self.__class__, connection=self)     
326         cursor = CursorWrapper(self.connection.cursor())                        
327         return cursor                                                           

在第 322 行创建连接时,代码似乎没有在 kwargs 中传递compress参数,无论如何默认情况下都没有。

传递应该让您'compress': TrueOPTIONS可用时创建压缩连接,该字典在第 321 行合并到 kwargs。

在后端的其余部分似乎没有对 MySQLdb.connect() 方法的任何其他调用。请注意,MySQLdb 被导入为:import MySQLdb as Database在该文件中。

于 2013-02-16T11:49:30.807 回答