1

私の MySQL サーバーは圧縮されており、Django が圧縮された接続を行っていることを確認したいと考えています。これどうやってするの?

4

2 に答える 2

5

試行錯誤と推論によると、解決策はdictに設定された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.pyDjango 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': TrueするOPTIONSと、利用可能な場合は圧縮接続を作成できます。この辞書は 321 行目で kwargs にマージされます。

バックエンドの残りの部分では、MySQLdb.connect() メソッドへの他の呼び出しはないようです。そのファイルでは、MySQLdb は次のようにインポートされることに注意してくださいimport MySQLdb as Database

于 2013-02-16T11:49:30.807 に答える