Что такое PyMySQL и чем он отличается от MySQLdb?Может ли это повлиять на развертывание Django? - PullRequest
40 голосов
/ 29 августа 2011

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

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

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

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

Ответы [ 4 ]

58 голосов
/ 29 декабря 2012

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
16 голосов
/ 29 августа 2011

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

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

10 голосов
/ 29 августа 2011

Ваш первый балл:

Согласно pymysql wiki page:

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

Ваш второй пункт:

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

1 голос
/ 29 января 2018

Согласно моему опыту, у меня были трудности с установкой "MySQL-python" - (MySQLdb).Это заставило меня искать другие альтернативы, поэтому я нашел pymysql, и он также легко устанавливался и работал с первого взгляда, как чудоПоэтому я бы предложил использовать только pymysql вместо MySQLdb.

...