Bagaimana saya bisa terhubung ke MySQL di Python 3 di Windows?

145

Saya menggunakan ActiveState Python 3 di Windows dan ingin terhubung ke database MySQL saya. Saya dengar mysqldbitu modul yang digunakan. Saya tidak dapat menemukan mysqldbuntuk Python 3.

Apakah ada repositori yang tersedia untuk biner mysqldb? Bagaimana saya bisa terhubung ke MySQL di Python 3 di Windows?

panofish
sumber
Berkat casevh untuk tautan ke binari tidak resmi, tapi saya terlalu tidak sabar dan tampaknya massa masih menggunakan python2 ... jadi saya memasang python 2.7 dan menginstal MySQLdb dari codegood.com/archives/129
panofish
1
mungkin duplikat MySQL-db lib untuk Python 3.0?
itsadok
1
Setiap kali saya mengetik pip, perut saya bergejolak. 7 tahun dan terus bertambah.
Ska

Jawaban:

274

Saat ini ada beberapa opsi untuk menggunakan Python 3 dengan mysql:

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

  • Secara resmi didukung oleh Oracle
  • Python murni
  • Agak lambat
  • Tidak kompatibel dengan MySQLdb

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

  • Python murni
  • Lebih cepat dari konektor mysql
  • Hampir sepenuhnya kompatibel dengan MySQLdb, setelah meneleponpymysql.install_as_MySQLdb()

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

  • garpu pymysql dengan speedup C opsional

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

  • Perpustakaan yang direkomendasikan Django.
  • Garpu ramah dari MySQLdb asli, berharap untuk bergabung kembali suatu hari nanti
  • Implementasi tercepat, karena berbasis C.
  • Yang paling kompatibel dengan MySQLdb, karena merupakan garpu
  • Debian dan Ubuntu menggunakannya untuk menyediakan keduanya python-mysqldbdan python3-mysqldbpaket.

tolok ukur di sini: https://github.com/methane/mysql-driver-benchmarks

Collin Anderson
sumber
26
pip install mysqlclient hanya bekerja untukku! terima kasih untuk daftar opsi yang lengkap.
ILMostro_7
4
mysqlclienthanya bekerja untuk Python3.4 + Django + Penumpang + Dreamhost saya instal.
ryanjdillon
Ubuntu memiliki mysqlclient Debian tidak
ManuelSchneid3r
Tampak seperti mysqlclient di debian testingsebagai python3-mysqldb, tapi tidak di stable. Jadi akan ada di versi berikutnya.
Collin Anderson
untuk menginstal konektor mysql di ubuntu Anda dapat menggunakan apt sepertisudo apt-get install python3-mysql.connector
peiman F.
67

Anda mungkin harus menggunakan pymysql - Pure Python MySQL client sebagai gantinya.
Ia bekerja dengan Python 3.x, dan tidak memiliki dependensi.

Klien MySQL Python murni ini menyediakan DB-API ke database MySQL dengan berbicara langsung ke server melalui klien biner / protokol server.

Contoh:

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()
Oleh Prypin
sumber
14
Sayangnya itu adalah perpustakaan yang didokumentasikan NOL yang kebetulan tidak berfungsi
o0 '.
7
@ Lohoris: Kenapa saya menggunakannya tanpa masalah?
Oleh Prypin
Saya belum dapat menginstal ini pada Windows 7 dengan Python 3.x. Adakah yang tahu bagaimana caranya?
paul
3
Python versi 3.3.1 di sini dan itu tidak menginstal. Keluhan tentang modul yang hilang disebut constants.
Pijusn
@Pius Karena Anda salah melakukannya. Baru diperiksa dan berfungsi.
Oleh Prypin
7

Saya juga mencoba menggunakan pymysql (pada mesin Win7 x64 saya, Python 3.3), tanpa banyak keberuntungan. Saya mengunduh .tar.gz, ekstrak, jalankan "setup.py install", dan semuanya tampak baik-baik saja. Sampai saya mencoba menghubungkan ke database, dan mendapat "KeyError [56]". Kesalahan yang tidak dapat saya temukan didokumentasikan di mana pun.

Jadi saya menyerah pada pymysql, dan saya memilih konektor Oracle MySQL .

Itu datang sebagai paket pengaturan, dan berfungsi di luar kotak. Dan tampaknya juga didokumentasikan dengan baik.

Bogd
sumber
Saya menggunakan MySQLdb dan itu bekerja dengan baik, tetapi jelas, saya berharap ini menjadi standar de facto seiring waktu.
panofish
6

jika Anda ingin menggunakan MySQLdb, Anda harus menginstal pymysql di komputer Anda dengan mengetikkan cmd windows

    pip install pymysql

lalu di python shell, ketik

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

ini akan membuat koneksi.

Lesung pipi
sumber
5

Ringkasan

Mysqlclient adalah alternatif terbaik (IMHO) karena bekerja dengan sempurna dengan Python 3+ , mengikuti konvensi yang diharapkan (tidak seperti konektor mysql), menggunakan nama objek mysqldb yang memungkinkan porting nyaman dari perangkat lunak yang ada dan digunakan oleh Django untuk pembuatan Python 3

Apakah ada repositori yang tersedia di mana binari ada untuk mysqldb?

Iya. mysqlclient memungkinkan Anda untuk menggunakan fungsi mysqldb. Padahal, ingat ini bukan port langsung oleh mysqldb, tetapi build oleh mysqlclient

Bagaimana saya bisa terhubung ke MySQL di Python 3 di Windows?

pip instal mysqlclient

Contoh

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

Saya tidak dapat menemukan mysqldb untuk Python 3.

mysqldb belum porting

Rahul
sumber
1

Di mac os maverick saya coba ini:

Setelah itu, masukkan interpreter python3 dan ketik:

  1. impor pymysql . Jika tidak ada kesalahan, instalasi Anda ok. Untuk verifikasi, tulis skrip untuk terhubung ke mysql dengan formulir ini:

  2. # skrip sederhana untuk impor koneksi MySQL pymysql db = pymysql.connect (host = "localhost", user = "root", passwd = "* ", db =" biblioteca ") #Tentu, ini adalah informasi untuk db saya # tutup koneksi db.close () *

Beri nama ("con.py" misalnya) dan simpan di desktop. Di Terminal ketik "cd desktop" dan kemudian $ python con.py Jika tidak ada kesalahan, Anda terhubung dengan server MySQL. Semoga berhasil!

duke2909
sumber
0

CyMySQL https://github.com/nakagami/CyMySQL

Saya telah menginstal pip pada windows 7 saya, dengan python 3.3 hanya pip install cymysql

(Anda tidak perlu cython) cepat dan tidak menyakitkan

Lazik
sumber
0

Ini tidak sepenuhnya menjawab pertanyaan awal saya, tetapi saya pikir penting untuk membuat semua orang tahu apa yang saya lakukan dan mengapa.

Saya memilih untuk terus menggunakan python 2.7 daripada python 3 karena prevalensi 2,7 contoh dan modul di web secara umum.

Sekarang saya menggunakan mysqldb dan mysql.connector untuk terhubung ke MySQL dengan Python 2.7. Keduanya bagus dan bekerja dengan baik. Saya pikir mysql.connector akhirnya lebih baik dalam jangka panjang.

panofish
sumber
Saya ingin tahu apakah Anda masih menggunakan Python 2.7. Secara umum, saya pikir itu sangat penting untuk melakukan transisi ke Python 3, dan saya terkejut melihat begitu banyak programmer memilih Python 2.7 untuk proyek-proyek baru. Bagaimana cara kerjanya?
vy32
@ vy32 Saya pikir Anda mungkin kurang terkejut oleh pengembang memilih py27 jika Anda menganggap bahwa banyak OS server tidak secara langsung mendukung Python 3. Red Hat Enterprise Linux masih dibundel dengan Python 2.6 hingga versi terbaru, dan bahkan hanya satu itu. memiliki py27.
coredumperror
Alasan lain untuk menggunakan python 2.7 adalah karena Maya (yang mendukung python) menggunakan 2.7 secara internal. BTW ... jika Anda juga perlu terhubung ke MySQL melalui python di Maya ... gunakan konektor mysql python murni.
Panofish
0

Saya menggunakan cymysql dengan python3 pada raspberry pi Saya cukup menginstal dengan: sudo pip3 install cython sudo pip3 install cymysql di mana cython tidak diperlukan tetapi harus membuat cymysql lebih cepat

Sejauh ini berfungsi seperti pesona dan sangat mirip dengan MySQLdb

Jaco
sumber
0

Ini adalah tutorial singkat tentang cara membuat Python 3.7 bekerja dengan Mysql
Terima kasih kepada semua yang telah saya jawab atas pertanyaan saya
- semoga ini membantu seseorang suatu hari nanti.
-------------------------------------------------- -
Sistem Saya:
Versi Windows: Pro 64-bit

PERSYARATAN .. unduh dan pasang ini lebih dulu ...
1. Unduh Xampp ..
https://www.apachefriends.org/download.html
2. Unduh Python
https://www.python.org/downloads/windows/

- ------------
// METODE
--------------
Instal xampp terlebih dahulu setelah selesai menginstal - instal Python 3.7.
Setelah selesai menginstal keduanya - reboot sistem windows Anda.
Sekarang mulai xampp dan dari panel kontrol - mulai server mysql.
Konfirmasikan versi dengan membuka CMD dan dalam tipe terminal

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.

Ini untuk memeriksa versi 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

Ini untuk memeriksa versi Python
Sekarang keduanya telah dikonfirmasi ketik berikut ini ke CMD ...

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

Setelah instalasi pymysql selesai.
buat file baru yang disebut "testconn.py" di desktop Anda atau di mana saja untuk akses cepat.
Buka file ini dengan luhur atau editor teks lain dan masukkan ini ke dalamnya.
Ingatlah untuk mengubah pengaturan untuk mencerminkan basis data Anda.

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

Sekarang dalam tipe CMD Anda

c:\Desktop>testconn.py

Dan itu saja ... sekarang Anda sepenuhnya terhubung dari skrip python ke mysql ...
Nikmati ...

Kybrd
sumber
0

impor pymysql

buka koneksi basis data

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

menyiapkan objek kursor menggunakan metode kursor ()

kursor = db.cursor ()

sql = "SELECT * FROM item"

cursor.execute (sql)

Ambil semua baris dalam daftar daftar.

results = cursor.fetchall () untuk baris dalam hasil: item_title = baris [1] komentar = baris [2] cetak ("Judul item adalah sebagai berikut =% s, Komentar adalah yang berikut =% s"% \ (item_title, komentar))

Amjad
sumber