我在我的 MySQL 服务器上进行了压缩,我想确保 Django 正在建立压缩连接。我怎样才能做到这一点?
问问题
627 次
2 回答
5
试验、错误和推理表明解决方案是在字典中使用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参数,无论如何默认情况下都没有。
传递应该让您'compress': True
在OPTIONS
可用时创建压缩连接,该字典在第 321 行合并到 kwargs。
在后端的其余部分似乎没有对 MySQLdb.connect() 方法的任何其他调用。请注意,MySQLdb 被导入为:import MySQLdb as Database
在该文件中。
于 2013-02-16T11:49:30.807 回答