2011-08-28 2 views
31

방금 ​​MySQLdb 대신 PyMySQL을 사용하여 장고 1.3 앱에서 몇 가지 문제를 해결했습니다. http://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.htmlPyMySQL이란 무엇이며 MySQLdb와 어떻게 다른가요? 장고 배포에 영향을 줄 수 있습니까?

이제는 PyMySQL이 실제로 무엇이며 어떻게 MySQLdb와 다른지 알고 싶습니다.

localhost에서 사용 중이며 일부 호스팅에 업로드됩니다.

PyMySQL을 localhost에서 사용하고 호스트에서 제공하는 모든 것을 호스팅해도 괜찮습니까? base.py에서 "MySQLdb"를 변경하고 "PyMySQL"에서 introspection.py로 변경 했으므로이 파일을 변경 한 후 서버에 업로드해야합니까? 또는 장고 파일이므로 장고는 이미 업로드 될 것이므로별로 중요하지 않습니까?

+1

'pymysql'은'mysqldb' ('mysql-python') 패키지의 순수한 파이썬 포트입니다. 그래서,'pymysql'은 C 컴파일러가 필요없이 모든 시스템에 설치 될 수 있습니다. mysqldb를 인스톨하는 것은 컴파일러를 필요로 할 수 있으며 윈도우에 에러가 발생할 수있다 (error : Unable to find vcvarsall.bat'). – skjoshi

+0

이 질문은 폭이 넓지 않은 경우 더 유용했을 것입니다.두 가지 라이브러리의 차이점, PyMySQL을 일종의 공유 호스팅 환경에 배포하는 방법 (당신에게 우리에게 아무것도 말하지 않았으므로 아마도 당신을 도울 수없는), 그리고 Django에서 PyMySQL을 사용할 때 알아야 할 사항이 무엇인지 알려줍니다. 그것들은 세 가지의 다른 질문이며 더 나은 질문을했을 것입니다. –

+0

PyMySQL을 사용해야하는지 아닌지에 관한 질문이었고 여러 질문을하고 있다는 두 가지 우려가있었습니다. – Hafiz

답변

12

PyMySQL과 MySQLdb는 모두 Python 용 데이터베이스 커넥터이며, Python 프로그램이 MySQL 서버와 통신 할 수있게 해주는 라이브러리입니다.

일반적으로 응용 프로그램을 배포 할 때 코어 장고 파일을 업로드하지 않습니다. Django가 배포 서버에서 제대로 작동한다면 확실히 변경할 필요가 없습니다. DB 드라이버는 ORM even보다 1 단계 또는 2 단계 아래에 있으며, 작성한 코드 중 어느 것이 사용 중인지에 따라 다릅니다. pymysql wiki 페이지에 따르면

:

9

첫 번째 점

MySQLdb, is a C extension module that has a reputation of being difficult to compile, especially if you're on a Mac. Additionally, end-users need to wait for new binaries to be compiled for each new release of Python, and MySQLdb will never run on Jython, IronPython, or PyPy (without something like cpyext or IronClad). We also maintain 100% compatibility between Python 2 and Python 3, so all advancements made on the 2.x trunk will be immediately available on Python 3.

두 번째 점 :

If django is working fine on your localhost, then it should be fine on your development.

+0

yah하지만 내 지점은 그 두 파일에 pdb mysqldb를 변경하는 동안 그 장고 있습니다, 그래서 그것은 문제를 만들 것입니다? 아니면 장고가 이미 웹 호스팅에 있습니까? 아니면 pymysql이 있습니까? – Hafiz

47

이 PyMySQL 및 MySQLdb는 동일한 기능을 제공 - 그들은 모두 데이터베이스 커넥터입니다. 차이점은 MySQLdb가 C 확장이고 PyMySQL이 순수 Python 인 구현에 있습니다.

는 PyMySQL 시도하는 몇 가지 이유가 있습니다

  • 는 일부 시스템에서 실행 얻을 쉬울 수는 PyPy와 함께 작동
  • 는 "greened"와 gevent와 함께 작동 할 수

Django와 함께 사용하는 적절한 방법은 가져오고 최상위 파일에서 일반적으로 manage.py로 가장하는 것으로 알려주는 것입니다. (서버를 시작할 때 또는 어떤 파일 당신은 전화) 당신의 manage.py의 맨 위에 다음 코드를 넣어 : 나는 "MySQL을 - 파이썬을"설치에 어려움이 있었다 내 경험으로 당

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

PyMySQL의 공식 버전이 위의 방법을 사용하여 (현재) Django 1.4와 호환되지 않는다고 덧붙여 야합니다. 시도해보고 싶다면 https://github.com/CMGS/PyMySQL에서 작동하는 것처럼 보이는 포크가 있습니다. –

+0

이것은 많은 시간을 절약 해주었습니다 - 감사합니다! –

+5

파이썬 3을 지원하기 위해 더 많은 이유를 하나 추가 할 것입니다. – Alveoli

0

- (MySQLdb를) . 그것은 pymysql을 발견하여 더 많은 대안을 검색하게 만들었고 쉽게 설치되었고 매력적으로 진행되었습니다. 그래서 MySQLdb 대신 pymysql을 사용하는 것이 좋습니다.

관련 문제