[python] Windows의 Python 3에서 MySQL에 어떻게 연결할 수 있습니까?

Windows에서 ActiveState Python 3을 사용하고 있으며 MySQL 데이터베이스에 연결하고 싶었습니다. 그것이 mysqldb사용할 모듈 이라고 들었습니다 . mysqldb파이썬 3을 찾을 수 없습니다 .

바이너리가 존재하는 저장소가 mysqldb있습니까? Windows의 Python 3에서 MySQL에 어떻게 연결할 수 있습니까?



답변

현재 mysql과 함께 Python 3을 사용하기위한 몇 가지 옵션이 있습니다.

https://pypi.python.org/pypi/mysql-connector-python

  • 오라클의 공식 지원
  • 순수한 파이썬
  • 조금 느려
  • MySQLdb와 호환되지 않습니다

https://pypi.python.org/pypi/pymysql

  • 순수한 파이썬
  • mysql-connector보다 빠름
  • MySQLdb호출 후 와 거의 완벽하게 호환pymysql.install_as_MySQLdb()

https://pypi.python.org/pypi/cymysql

  • 선택적 C 속도 향상 기능을 갖춘 pymysql 포크

https://pypi.python.org/pypi/mysqlclient

  • 장고 추천 도서관.
  • 원래 MySQLdb의 친절한 포크는 언젠가 다시 합류하기를 희망합니다.
  • C 기반이므로 가장 빠른 구현입니다.
  • 포크이므로 MySQLdb와 가장 호환됩니다.
  • 데비안과 우분투는 모두 제공하기 위해 그것을 사용 python-mysqldb하고 python3-mysqldb패키지를.

여기에 벤치 마크 : https://github.com/methane/mysql-driver-benchmarks


답변

pymysql -Pure Python MySQL 클라이언트를 대신 사용해야 합니다.
Python 3.x에서 작동하며 종속성이 없습니다.

이 순수 Python MySQL 클라이언트는 이진 클라이언트 / 서버 프로토콜을 통해 서버와 직접 통신하여 MySQL 데이터베이스에 DB-API를 제공합니다.

예:

import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd=None, db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
for r in cur:
    print(r)
cur.close()
conn.close()

답변

또한 pymysql (Win7 x64 컴퓨터에서 Python 3.3)을 너무 운이없이 사용해 보았습니다. .tar.gz를 다운로드하고 압축을 풀고 “setup.py install”을 실행했는데 모든 것이 정상으로 보였습니다. 데이터베이스에 연결하려고 할 때까지 “KeyError [56]”이 나타납니다. 어디서나 문서를 찾을 수없는 오류.

그래서 나는 pymysql을 포기하고 Oracle MySQL 커넥터 에 정착했습니다 .

설치 패키지로 제공되며 기본적으로 작동합니다. 또한 문서화 된 것으로 보입니다.


답변

MySQLdb를 먼저 사용하려면 Windows의 cmd를 입력하여 PC에 pymysql을 설치해야합니다

    pip install pymysql

그런 다음 파이썬 쉘에서

    import pymysql
    pymysql.install_as_MySQLdb()
    import MySQLdb
    db = MySQLdb.connect("localhost" , "root" , "password")

연결이 설정됩니다.


답변

테스트되지 않았지만 다음에서 사용할 수있는 일부 바이너리가 있습니다.

비공식 Windows 바이너리


답변

요약

MysqlclientPython 3+ 와 완벽하게 작동하고 (mysql 커넥터와 달리) 예상 규칙을 따르고 , 기존 소프트웨어의 편리한 포팅을 가능하게하는 객체 이름 mysqldb 를 사용 하고 Python 3 빌드를 위해 Django 에서 사용 하기 때문에 최상의 대안 (IMHO)
입니다

mysqldb에 바이너리가있는 저장소가 있습니까?

예. mysqlclient를 사용하면 mysqldb 함수를 사용할 수 있습니다. 그러나 이것은 mysqldb 의 직접 포트 가 아니라 mysqlclient의 빌드 라는 것을 기억하십시오.

Windows의 Python 3에서 MySQL에 어떻게 연결할 수 있습니까?

pip install mysqlclient

#!/Python36/python
#Please change above path to suit your platform.  Am running it on Windows
import MySQLdb
db = MySQLdb.connect(user="my-username",passwd="my-password",host="localhost",db="my-databasename")
cursor = db.cursor()
cursor.execute("SELECT * from my-table-name")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

Python 3 용 mysqldb를 찾을 수 없습니다.

mysqldb는 아직 포팅되지 않았다


답변

PyMySQL은 MySQLDb와 같은 인터페이스를 제공합니다. 초기화를 시도 할 수 있습니다.

import pymysql
pymysql.install_as_MySQLdb()

또한 python3 용 github에 mysql-python 포트가 있습니다.

https://github.com/davispuh/MySQL-for-Python-3