Windows üzerinde Python 3'te MySQL'e nasıl bağlanabilirim?


149

Windows'ta ActiveState Python 3 kullanıyorum ve MySQL veritabanıma bağlanmak istiyorum. mysqldbKullanılacak modülün bu olduğunu duydum . mysqldbPython 3 için bulamıyorum .

İkili dosyaların bulunduğu bir depo var mysqldbmı? Windows üzerinde Python 3'te MySQL'e nasıl bağlanabilirim?


Resmi olmayan ikili dosyalara bağlantı için casevh sayesinde, ama çok sabırsızdım ve görünen o ki kitleler hala python2 kullanıyor ... bu yüzden python 2.7'yi kurdum ve MySQLdb'yi codegood.com/archives/129
panofish


1
Her pip yazdığımda midem titriyor. 7 yıl ve devam ediyor.
Ska

Yanıtlar:


279

Şu anda Python 3'ü mysql ile kullanmak için birkaç seçenek var:

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

  • Oracle tarafından resmi olarak destekleniyor
  • Saf piton
  • Biraz yavaş
  • MySQLdb ile uyumlu değil

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

  • Saf piton
  • Mysql-connector'dan daha hızlı
  • Aradıktan MySQLdbsonra ile neredeyse tamamen uyumlupymysql.install_as_MySQLdb()

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

  • isteğe bağlı C hızlandırmalarıyla pymysql çatalı

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

  • Django'nun tavsiye ettiği kitaplık.
  • Orijinal MySQLdb'nin dost çatalı, bir gün geri birleşmeyi umuyor
  • C tabanlı olduğu için en hızlı uygulama.
  • Bir çatal olduğu için MySQLdb ile en uyumludur
  • Debian ve Ubuntu, hem python-mysqldbve hem de python3-mysqldbpaketleri sağlamak için kullanır .

karşılaştırmalar burada: https://github.com/methane/mysql-driver-benchmarks


26
pip install mysqlclient sadece benim için çalıştı ! kapsamlı seçenekler listesi için teşekkürler.
ILMostro_7

4
mysqlclientPython3.4 + Django + Passenger + Dreamhost kurulumum için çalıştım.
ryanjdillon


Mysqlclient gibi görünüyor debian olduğu testingkadar python3-mysqldb, ama burada değil stable. Yani bir sonraki versiyonda olacak.
Collin Anderson

mysql konektörünü sudo apt-get install python3-mysql.connector
ubuntu'ya

68

Bunun yerine muhtemelen pymysql - Pure Python MySQL istemcisini kullanmalısınız.
Python 3.x ile çalışır ve herhangi bir bağımlılığı yoktur.

Bu saf Python MySQL istemcisi, ikili istemci / sunucu protokolü aracılığıyla doğrudan sunucuyla konuşarak MySQL veritabanına bir DB-API sağlar.

Misal:

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
maalesef SIFIR belgeli bir kitaplık ve işe yaramıyor
o0 '.

7
@Lohoris: Nasıl oluyor da sorunsuz kullanıyorum?
Oleh Prypin

Bunu Windows 7'ye Python 3.x ile yükleyemedim. Nasıl olduğunu bilen var mı?
paul

3
Python 3.3.1 sürümü burada ve yüklenmiyor. Aranan modülün eksikliğinden şikayetçi constants.
Pijusn

@Pius Çünkü yanlış yapıyorsun. Sadece kontrol edildi ve çalışıyor.
Oleh Prypin

8

MySQLdb'yi kullanmak istiyorsanız önce cmd of windows yazarak bilgisayarınıza pymysql kurmanız gerekir.

    pip install pymysql

sonra python kabuğunda yazın

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

bu bağlantıyı kuracaktır.


benim için etkili oldu, teşekkürler
Mikaele

7

Ayrıca pymysql'i (Win7 x64 makinemde, Python 3.3'te) çok fazla şans olmadan kullanmayı denedim. .Tar.gz dosyasını indirdim, çıkardım, "setup.py install" ı çalıştırdım ve her şey yolunda görünüyordu. Bir veritabanına bağlanmayı deneyene ve "KeyError [56]" alıncaya kadar. Hiçbir yerde belgelenmiş bulamadığım bir hata.

Bu yüzden pymysql'den vazgeçtim ve Oracle MySQL bağlayıcısına karar verdim .

Kurulum paketi olarak gelir ve kutudan çıkar çıkmaz çalışır. Ayrıca düzgün bir şekilde belgelenmiş görünüyor.


MySQLdb kullanıyordum ve bu harika çalışıyor, ancak açıkça, bunun zamanla varsayılan standart haline gelmesini bekliyorum.
panofish


5

Özet

Mysqlclient en iyi alternatiftir (IMHO) çünkü Python 3+ ile kusursuz çalışır , beklenen kuralları takip eder (mysql konektörünün aksine), mevcut yazılımın uygun şekilde taşınmasını sağlayan mysqldb nesne adını kullanır ve Django tarafından Python 3 sürümleri için kullanılır

Mysqldb için ikili dosyaların bulunduğu bir depo var mı?

Evet. mysqlclient, mysqldb işlevlerini kullanmanıza izin verir. Bununla birlikte, bunun mysqldb tarafından doğrudan bir bağlantı noktası değil , mysqlclient tarafından yapılan bir yapı olduğunu unutmayın.

Windows üzerinde Python 3'te MySQL'e nasıl bağlanabilirim?

pip mysqlclient yüklemek

Misal

#!/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 için mysqldb'yi bulamıyorum.

mysqldb henüz taşınmadı




1

Mac os maverick'imde şunu deniyorum:

Bundan sonra, python3 yorumlayıcısına girin ve şunu yazın:

  1. ithal pymysql . Hata yoksa kurulumunuz tamamdır. Doğrulama için bu formla mysql'ye bağlanmak için bir komut dosyası yazın:

  2. # MySQL bağlantısı için basit bir komut dosyası içe aktarma pymysql db = pymysql.connect (host = "localhost", user = "root", passwd = "* ", db =" biblioteca ") # Elbette, bu benim db için bilgidir # db.close bağlantısını kapat () *

Bir ad verin (örneğin "con.py") ve masaüstüne kaydedin. Terminal'de "cd desktop" yazın ve ardından $ python con.py Hata yoksa, MySQL sunucusuna bağlanırsınız. İyi şanslar!



0

Bu, asıl sorumu tam olarak yanıtlamıyor, ancak herkese ne yaptığımı ve neden yaptığımı bildirmenin önemli olduğunu düşünüyorum.

Genel olarak web üzerinde 2.7 örnek ve modüllerin yaygınlığından dolayı python 3 yerine python 2.7 kullanmaya devam etmeyi seçtim.

Şimdi Python 2.7'de MySQL'e bağlanmak için hem mysqldb hem de mysql.connector kullanıyorum. İkisi de harika ve iyi çalışıyor. Bence mysql.connector nihayetinde uzun vadede daha iyi.


Hala Python 2.7 kullanıp kullanmadığınızı merak ediyorum. Genel olarak, Python 3'e geçiş yapmanın gerçekten önemli olduğunu düşünüyorum ve bu kadar çok programcının yeni projeler için Python 2.7'yi seçtiğini görmek beni şaşırttı. İşler nasıl gitti?
vy32

@ vy32 Birçok sunucu işletim sisteminin doğrudan Python 3'ü desteklemediğini düşünüyorsanız, geliştiricilerin py27'yi seçmesi sizi daha az şaşırtabilir. Red Hat Enterprise Linux, en son sürüme ve hatta yalnızca bu sürüme kadar Python 2.6 ile birlikte paketleniyordu py27'ye sahiptir.
coredumperror

Python 2.7 kullanmanın bir başka nedeni de Maya'nın (python'u destekleyen) dahili olarak 2.7 kullanmasıdır. BTW ... Maya'da python aracılığıyla MySQL'e de bağlanmanız gerekiyorsa ... saf python mysql konektörünü kullanın.
panofish

0

Bir ahududu pi üzerinde python3 ile cymysql kullanıyorum, basitçe yükledim: sudo pip3 install cython sudo pip3 cython gerekli olmadığı ancak cymysql'i daha hızlı yapmalıyken cymysql kurun

Şimdiye kadar bir cazibe gibi çalışıyor ve MySQLdb'ye çok benziyor


0

Bu, Python 3.7'nin Mysql ile nasıl çalıştırılacağına dair hızlı bir öğreticidir.
Sorularıma cevap aldığım herkese teşekkürler
- umarım bu bir gün birilerine yardımcı olur.
-------------------------------------------------- -
Sistemim:
Windows Sürümü: Pro 64-bit

GEREKSİNİMLER .. önce bunları indirin ve kurun ...
1. Xampp'ı indirin ..
https://www.apachefriends.org/download.html
2. Python'u indirin
https://www.python.org/downloads/windows/

- ------------
// YÖNTEM
--------------
Kurulum tamamlandıktan sonra xampp'i kurun - Python 3.7'yi kurun.
Her ikisini de yüklemeyi bitirdikten sonra - Windows sisteminizi yeniden başlatın.
Şimdi xampp'i ve kontrol panelinden başlatın - mysql sunucusunu başlatın.
CMD'yi açarak ve terminal tipinde sürümleri onaylayın

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.

Bu, MYSQL sürümünü kontrol etmek içindir

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

Bu, Python sürümünü kontrol etmektir.
Şimdi her ikisi de onaylandığına göre aşağıdakileri CMD'ye yazın ...

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

Pymysql kurulumu tamamlandıktan sonra.
Masaüstünüzde veya hızlı erişim için herhangi bir yerde "testconn.py" adlı yeni bir dosya oluşturun.
Bu dosyayı sublime veya başka bir metin editörü ile açın ve içine koyun.
Veritabanınızı yansıtmak için ayarları değiştirmeyi unutmayı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()

Şimdi CMD'nizde - yazın

c:\Desktop>testconn.py

Ve işte bu ... artık bir python betiğinden mysql'e tamamen bağlısınız ...
Keyfini çıkarın ...


0

ithal pymysql

veritabanı bağlantısını aç

db = pymysql.connect ("localhost", "kök", "", "süsleme")

cursor () yöntemini kullanarak bir imleç nesnesi hazırlayın

imleç = db.cursor ()

sql = "Öğeden * SEÇ"

cursor.execute (sql)

Liste listesindeki tüm satırları çeker.

sonuçlar = sonuçlardaki satır için cursor.fetchall (): item_title = row [1] comment = row [2] print ("Öğelerin başlığı aşağıdaki =% s, Yorumlar şu şekildedir =% s"% \ (item_title, yorum Yap))

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.