Что такое PyMySQL и как он отличается от MySQLdb? Может ли это повлиять на развертывание Django?

Я просто решил некоторые проблемы в своем приложении Django 1.3, используя PyMySQL вместо MySQLdb. Я последовал этому руководству о том, как сделать переключатель: http://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.html

Теперь я хочу знать, что такое PyMySQL и как он отличается от MySQLdb.

Я использую его на localhost, а затем загружаю его на какой-то хостинг.

Можно ли использовать PyMySQL на локальном хосте и размещать то, что они предоставляют? Так как я изменил "MySQLdb" в base.py и introspection.py на "PyMySQL", мне нужно будет загрузить его на сервер после изменения этих файлов? Или как это Django файлы, поскольку Django будет загружен там уже, не важно ли это?

Ответ 1

PyMySQL и MySQLdb - оба соединителя базы данных для Python, библиотеки, позволяющие программам Python разговаривать с сервером MySQL.

Обычно вы не загружаете основные Django файлы при развертывании приложения. Если Django отлично работает на вашем сервере развертывания, вам определенно ничего не нужно менять. Драйвер DB - это шаг или два ниже ORM, и, конечно, ни один из написанных вами кодов не зависит от того, какой из них используется.

Ответ 2

PyMySQL и MySQLdb обеспечивают ту же функциональность - они оба являются соединителями базы данных. Разница заключается в реализации, где MySQLdb является расширением C, а PyMySQL - чистым Python.

Есть несколько причин попробовать PyMySQL:

  • возможно, будет проще работать в некоторых системах.
  • он работает с PyPy
  • его можно "озеленять" и работать с gevent

Правильный способ использовать его с Django - это импортировать его и сообщить ему, чтобы он выдавал MySQLdb в файле верхнего уровня, обычно manage.py. Поместите следующий код в самый верх вашего файла manage.py(или любого другого файла, который вы вызываете при запуске своего сервера):

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

Ответ 3

Ваша первая точка:

Согласно pymysql wiki страница:

MySQLdb, является модулем расширения C, который имеет репутацию сложно скомпилировать, особенно если вы на Mac. Дополнительно, конечным пользователям необходимо дождаться, когда новые бинарные файлы будут скомпилированы для каждого нового релиз Python и MySQLdb никогда не будут работать на Jython, IronPython, или PyPy (без чего-то вроде cpyext или IronClad). Мы также поддерживаем 100% совместимость между Python 2 и Python 3, поэтому все улучшения сделанный на соединительной линии 2.x, будет немедленно доступен на Python 3.

Ваша вторая точка:

Если django отлично работает на вашем локальном хосте, то это должно быть хорошо ваше развитие.