Làm cách nào để kết nối với MySQL trong Python 3 trên Windows?


145

Tôi đang sử dụng ActiveState Python 3 trên Windows và muốn kết nối với cơ sở dữ liệu MySQL của tôi. Tôi nghe nói đó mysqldblà mô-đun để sử dụng. Tôi không thể tìm thấy mysqldbPython 3.

Có một kho lưu trữ có sẵn trong đó các nhị phân tồn tại cho mysqldb? Làm cách nào để kết nối với MySQL trong Python 3 trên Windows?


Cảm ơn casevh về liên kết đến các nhị phân không chính thức, nhưng tôi quá nôn nóng và có vẻ như mọi người vẫn đang sử dụng python2 ... vì vậy tôi đã cài đặt python 2.7 và cài đặt MySQLdb
hoảng loạn

1
có thể sao chép MySQL-db lib cho Python 3.0?
itadok

1
Mỗi lần tôi gõ pip, bụng tôi quặn lên. 7 năm và đếm.
Ska

Câu trả lời:


274

Hiện tại có một vài tùy chọn để sử dụng Python 3 với mysql:

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

  • Chính thức được hỗ trợ bởi Oracle
  • Trăn nguyên chất
  • Hơi chậm
  • Không tương thích với MySQLdb

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

  • Trăn nguyên chất
  • Nhanh hơn kết nối mysql
  • Gần như hoàn toàn tương thích với MySQLdb, sau khi gọipymysql.install_as_MySQLdb()

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

  • ngã ba của pymysql với tăng tốc C tùy chọn

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

  • Thư viện đề nghị của Django.
  • Ngã ba thân thiện của MySQLdb gốc, hy vọng sẽ hợp nhất trở lại vào một ngày nào đó
  • Việc thực hiện nhanh nhất, vì nó dựa trên C.
  • Tương thích nhất với MySQLdb, vì nó là một ngã ba
  • Debian và Ubuntu sử dụng nó để cung cấp cả hai python-mysqldbpython3-mysqldbcác gói.

điểm chuẩn ở đây: https://github.com/methane/mysql-do-benchmark


26
pip install mysqlclient chỉ làm việc cho tôi cảm ơn vì danh sách toàn diện các lựa chọn
ILMostro_7

4
mysqlclientchỉ hoạt động cho cài đặt Python3.4 + Django + Hành khách + Dreamhost của tôi.
ryanjdillon

Ubuntu có mysqlclient Debian không
ManuelSchneid3r

Trông giống như mysqlclient là trong debian testingnhư python3-mysqldb, nhưng nó không phải trong stable. Vì vậy, nó sẽ có trong phiên bản tiếp theo.
Collin Anderson

để cài đặt trình kết nối mysql trên Ubuntu, bạn có thể sử dụng apt likesudo apt-get install python3-mysql.connector
peiman F.

67

Có lẽ bạn nên sử dụng pymysql - máy khách MySQL Python thuần túy .
Nó hoạt động với Python 3.x và không có bất kỳ phụ thuộc nào.

Máy khách Python thuần Python này cung cấp DB-API cho cơ sở dữ liệu MySQL bằng cách nói chuyện trực tiếp với máy chủ thông qua giao thức máy khách / máy chủ nhị phân.

Thí dụ:

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()

14
thật không may, đó là một thư viện tài liệu ZERO mà không hoạt động
o0 '.

7
@Lohoris: Tại sao tôi lại sử dụng nó mà không gặp vấn đề gì?
Oleh Prypin

Tôi chưa thể cài đặt cái này trên Windows 7 với Python 3.x. Có ai biết làm thế nào không?
paul

3
Python phiên bản 3.3.1 ở đây và nó không cài đặt. Khiếu nại về mô-đun bị thiếu được gọi constants.
Pijusn

@Pius Vì bạn đang làm sai. Chỉ cần kiểm tra và nó hoạt động.
Oleh Prypin

7

Tôi cũng đã thử sử dụng pymysql (trên máy Win7 x64, Python 3.3) mà không gặp quá nhiều may mắn. Tôi đã tải xuống .tar.gz, giải nén, chạy "setup.py install" và mọi thứ có vẻ ổn. Cho đến khi tôi thử kết nối với cơ sở dữ liệu và nhận được "KeyError [56]". Một lỗi mà tôi không thể tìm thấy tài liệu ở bất cứ đâu.

Vì vậy, tôi đã từ bỏ pymysql và tôi đã giải quyết được trình kết nối Oracle MySQL .

Nó đi kèm như một gói thiết lập, và hoạt động ra khỏi hộp. Và nó cũng có vẻ như tài liệu.


Tôi đã sử dụng MySQLdb và nó hoạt động rất tốt, nhưng rõ ràng, tôi sẽ mong đợi điều này sẽ trở thành tiêu chuẩn defacto theo thời gian.
panofish

6

Nếu bạn muốn sử dụng MySQLdb trước tiên, bạn phải cài đặt pymysql trên máy tính của mình bằng cách nhập vào cmd của windows

    pip install pymysql

sau đó trong vỏ trăn, gõ

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

điều này sẽ thiết lập kết nối.



5

Tóm lược

Mysqlclient là giải pháp thay thế tốt nhất (IMHO) vì nó hoạt động hoàn hảo với Python 3+ , tuân theo các quy ước dự kiến (không giống như trình kết nối mysql), sử dụng tên đối tượng mysqldb cho phép chuyển phần mềm hiện có thuận tiện và được Django sử dụng cho các bản dựng của Python 3

Có một kho lưu trữ có sẵn trong đó các nhị phân tồn tại cho mysqldb không?

Đúng. mysqlclient cho phép bạn sử dụng các hàm mysqldb. Mặc dù vậy, hãy nhớ rằng đây không phải là một cổng trực tiếp của mysqldb, mà là một bản dựng của mysqlclient

Làm cách nào để kết nối với MySQL trong Python 3 trên Windows?

Pip cài đặt mysqlclient

Thí dụ

#!/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()

Tôi không thể tìm thấy mysqldb cho Python 3.

mysqldb chưa được chuyển




1

Trên mac os maverick của tôi, tôi thử điều này:

Sau đó, nhập trình thông dịch python3 và gõ:

  1. nhập pymysql . Nếu không có lỗi cài đặt của bạn là ok. Để xác minh, hãy viết một tập lệnh để kết nối với mysql bằng mẫu này:

  2. # một tập lệnh đơn giản cho kết nối MySQL nhập pymysql db = pymysql.connect (host = "localhost", user = "root", passwd = "* ", db =" biblioteca ") #Sure, đây là thông tin cho db của tôi # đóng kết nối db.close () *

Đặt tên cho nó (ví dụ "con.py") và lưu nó trên máy tính để bàn. Trong Terminal loại "cd desktop" và sau đó là $ python con.py Nếu không có lỗi, bạn được kết nối với máy chủ MySQL. Chúc may mắn!



0

Điều này không trả lời đầy đủ câu hỏi ban đầu của tôi, nhưng tôi nghĩ điều quan trọng là phải cho mọi người biết những gì tôi đã làm và tại sao.

Tôi đã chọn tiếp tục sử dụng python 2.7 thay vì python 3 vì sự phổ biến của 2.7 ví dụ và mô-đun trên web nói chung.

Bây giờ tôi sử dụng cả mysqldb và mysql.connector để kết nối với MySQL trong Python 2.7. Cả hai đều tuyệt vời và làm việc tốt. Tôi nghĩ rằng mysql.connector cuối cùng tốt hơn về lâu dài.


Tôi tò mò nếu bạn vẫn đang sử dụng Python 2.7. Nói chung, tôi nghĩ rằng việc thực hiện chuyển đổi sang Python 3 thực sự rất quan trọng và tôi đã rất ngạc nhiên khi thấy rất nhiều lập trình viên chọn Python 2.7 cho các dự án mới. Làm thế nào mà mọi việc diễn ra?
vy32

@ vy32 Tôi nghĩ rằng bạn có thể ít ngạc nhiên hơn bởi các nhà phát triển chọn py27 nếu bạn cho rằng nhiều hệ điều hành máy chủ không hỗ trợ trực tiếp Python 3. Red Hat Enterprise Linux vẫn được gói với Python 2.6 cho đến phiên bản mới nhất và thậm chí chỉ có một phiên bản mới nhất có py27.
coredumperror

Một lý do khác để sử dụng python 2.7 là vì Maya (hỗ trợ python) sử dụng 2.7 bên trong. BTW ... nếu bạn cũng cần kết nối với MySQL thông qua python trong Maya ... hãy sử dụng trình kết nối mysql python thuần.
hoảng loạn

0

Tôi đang sử dụng cymysql với python3 trên raspberry pi Tôi chỉ cần cài đặt bằng cách: sudo pip3 cài đặt cython sudo pip3 cài đặt cymysql trong đó cython không cần thiết nhưng nên làm cho cymysql nhanh hơn

Cho đến nay, nó hoạt động như một bùa mê và rất giống với MySQLdb


0

Đây là một hướng dẫn nhanh về cách để Python 3.7 hoạt động với Mysql
Nhờ tất cả những người tôi nhận được câu trả lời cho câu hỏi của mình
- hy vọng điều này sẽ giúp ai đó một ngày nào đó.
-------------------------------------------------- -
Hệ thống của tôi:
Phiên bản Windows: Pro 64-bit

YÊU CẦU .. tải về và cài đặt các đầu tiên ...
1. Tải xampp ..
https://www.apachefriends.org/download.html
2. Tải Python
https://www.python.org/downloads/windows/

- ------------
// PHƯƠNG PHÁP
--------------
Cài đặt xampp trước sau khi cài đặt xong - cài đặt Python 3.7.
Sau khi cài đặt xong cả hai - khởi động lại hệ thống windows của bạn.
Bây giờ bắt đầu xampp và từ bảng điều khiển - khởi động máy chủ mysql.
Xác nhận các phiên bản bằng cách mở CMD và trong loại thiết bị đầu cuối

c:\>cd c:\xampp\mysql\bin

c:\xampp\mysql\bin>mysql -h localhost -v
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.21-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Điều này là để kiểm tra phiên bản MYSQL

c:\xampp\mysql\bin>python
Python 3.7.0b3 (v3.7.0b3:4e7efa9c6f, Mar 29 2018, 18:42:04) [MSC v.1913 64 bit (AMD64)] on win32

Điều này là để kiểm tra phiên bản Python
Bây giờ cả hai đã được xác nhận nhập vào phần sau ...

c:\xampp\mysql\bin>pip install pymysql

Sau khi cài đặt pymysql hoàn tất.
tạo một tệp mới gọi là "testconn.py" trên máy tính để bàn của bạn hoặc bất cứ nơi nào để truy cập nhanh.
Mở tệp này với cao siêu hoặc trình soạn thảo văn bản khác và đặt tệp này vào đó.
Hãy nhớ thay đổi cài đặt để phản ánh cơ sở dữ liệu của bạn.

#!/usr/bin/python
import pymysql
pymysql.install_as_MySQLdb() 

import MySQLdb
db = MySQLdb.connect(user="yourusernamehere",passwd="yourpasswordhere",host="yourhosthere",db="yourdatabasehere")
cursor = db.cursor()
cursor.execute("SELECT * from yourmysqltablehere")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

Bây giờ trong CMD của bạn - gõ

c:\Desktop>testconn.py

Và đó là ... bây giờ bạn đã kết nối đầy đủ từ một kịch bản python đến mysql ...
Tận hưởng ...


0

nhập pymysql

mở kết nối cơ sở dữ liệu

db = pymysql.connect ("localhost", "root", "", "ornament")

chuẩn bị một đối tượng con trỏ bằng phương thức con trỏ ()

con trỏ = db.cthon ()

sql = "CHỌN * TỪ mục"

con trỏ.execute (sql)

Lấy tất cả các hàng trong danh sách các danh sách.

results = con trỏ.fetchall () cho hàng trong kết quả: item_title = row [1] comment = row [2] print ("Tiêu đề của các mục là sau =% s, Nhận xét là sau =% s"% \ (item_title, bình luận))

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.