私の MySQL サーバーは圧縮されており、Django が圧縮された接続を行っていることを確認したいと考えています。これどうやってするの?
2 に答える
5
試行錯誤と推論によると、解決策はdictに設定されたcompress
フィールドを使用することです。True
OPTIONS
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': True
するOPTIONS
と、利用可能な場合は圧縮接続を作成できます。この辞書は 321 行目で kwargs にマージされます。
バックエンドの残りの部分では、MySQLdb.connect() メソッドへの他の呼び出しはないようです。そのファイルでは、MySQLdb は次のようにインポートされることに注意してくださいimport MySQLdb as Database
。
于 2013-02-16T11:49:30.807 に答える