Wie kann ich in Python 3 unter Windows eine Verbindung zu MySQL herstellen?


145

Ich verwende ActiveState Python 3 unter Windows und wollte eine Verbindung zu meiner MySQL-Datenbank herstellen. Ich habe gehört, dass dies mysqldbdas zu verwendende Modul war. Ich kann nicht mysqldbfür Python 3 finden.

Gibt es ein Repository, für das die Binärdateien vorhanden sind mysqldb? Wie kann ich in Python 3 unter Windows eine Verbindung zu MySQL herstellen?


Vielen Dank an casevh für den Link zu den inoffiziellen Binärdateien, aber ich war zu ungeduldig und es scheint, dass die Massen immer noch Python2 verwenden ... also habe ich Python 2.7 installiert und MySQLdb von codegood.com/archives/129
panofish

1
mögliches Duplikat von MySQL-db lib für Python 3.0?
itsadok

1
Jedes Mal, wenn ich Pip tippe, dreht sich mein Magen um. 7 Jahre und Zählen.
Ska

Antworten:


274

Derzeit gibt es einige Optionen für die Verwendung von Python 3 mit MySQL:

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

  • Offiziell von Oracle unterstützt
  • Reine Python
  • Ein bisschen langsam
  • Nicht kompatibel mit MySQLdb

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

  • Reine Python
  • Schneller als MySQL-Anschluss
  • Fast vollständig kompatibel mit MySQLdb, nach dem Anrufpymysql.install_as_MySQLdb()

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

  • Gabel von Pymysql mit optionalen C-Beschleunigungen

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

  • Djangos empfohlene Bibliothek.
  • Friendly Fork der ursprünglichen MySQLdb, hofft, eines Tages wieder zusammenzuführen
  • Die schnellste Implementierung, da sie C-basiert ist.
  • Am kompatibelsten mit MySQLdb, da es sich um eine Gabel handelt
  • Debian und Ubuntu verwenden es, um sowohl python-mysqldbals auch python3-mysqldbPakete bereitzustellen .

Benchmarks hier: https://github.com/methane/mysql-driver-benchmarks


26
pip install mysqlclient hat gerade für mich gearbeitet! Vielen Dank für die umfassende Liste der Optionen.
ILMostro_7

4
mysqlclientIch habe gerade für meine Python3.4 + Django + Passenger + Dreamhost-Installation gearbeitet.
Ryanjdillon

Ubuntu hat mysqlclient Debian nicht
ManuelSchneid3r

Sieht aus wie mysqlclient in debian testingals ist python3-mysqldb, aber es ist nicht in stable. So wird es in der nächsten Version sein.
Collin Anderson

Für die Installation von MySQL-Connector auf Ubuntu können Sie eine passende wiesudo apt-get install python3-mysql.connector
Peiman F.

67

Sie sollten stattdessen wahrscheinlich den pymysql - Pure Python MySQL-Client verwenden.
Es funktioniert mit Python 3.x und hat keine Abhängigkeiten.

Dieser reine Python-MySQL-Client stellt eine DB-API für eine MySQL-Datenbank bereit, indem er über das binäre Client / Server-Protokoll direkt mit dem Server kommuniziert.

Beispiel:

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
Leider ist es eine NULL-dokumentierte Bibliothek, die einfach nicht funktioniert
o0 '.

7
@ Lohoris: Wieso benutze ich es ohne Probleme?
Oleh Prypin

Ich konnte dies unter Python 7 mit Python 3.x nicht installieren. Weiß jemand wie?
Paul

3
Python Version 3.3.1 hier und es wird nicht installiert. Beschwert sich über fehlendes Modul namens constants.
Pijusn

@ Pius Weil du es falsch machst. Einfach überprüft und es funktioniert.
Oleh Prypin

7

Ich habe auch versucht, pymysql (auf meinem Win7 x64-Computer, Python 3.3) zu verwenden, ohne zu viel Glück. Ich habe die .tar.gz heruntergeladen, extrahiert, "setup.py install" ausgeführt und alles schien in Ordnung zu sein. Bis ich versuchte, eine Verbindung zu einer Datenbank herzustellen und "KeyError [56]" bekam. Ein Fehler, den ich nirgendwo finden konnte.

Also habe ich pymysql aufgegeben und mich für den Oracle MySQL-Connector entschieden .

Es wird als Setup-Paket geliefert und funktioniert sofort. Und es scheint auch anständig dokumentiert.


Ich habe MySQLdb verwendet und das funktioniert großartig, aber ich würde natürlich erwarten, dass dies im Laufe der Zeit zum Defacto-Standard wird.
Panofish

6

Wenn Sie zuerst MySQLdb verwenden möchten, müssen Sie pymysql auf Ihrem PC installieren, indem Sie cmd von Windows eingeben

    pip install pymysql

Geben Sie dann in die Python-Shell ein

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

Dadurch wird die Verbindung hergestellt.



5

Zusammenfassung

Mysqlclient ist die beste Alternative (IMHO), da es einwandfrei mit Python 3+ funktioniert , den erwarteten Konventionen folgt (im Gegensatz zum MySQL-Connector), den Objektnamen mysqldb verwendet, der die bequeme Portierung vorhandener Software ermöglicht und von Django für Python 3-Builds verwendet wird

Gibt es ein Repository, in dem die Binärdateien für mysqldb vorhanden sind?

Ja. Mit mysqlclient können Sie mysqldb-Funktionen verwenden. Denken Sie jedoch daran, dass dies kein direkter Port von mysqldb ist, sondern ein Build von mysqlclient

Wie kann ich in Python 3 unter Windows eine Verbindung zu MySQL herstellen?

pip installiere mysqlclient

Beispiel

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

Ich kann mysqldb für Python 3 nicht finden.

mysqldb wurde noch nicht portiert




1

Auf meinem Mac OS Maverick versuche ich Folgendes:

Geben Sie danach den Python3-Interpreter ein und geben Sie Folgendes ein:

  1. importiere pymysql . Wenn kein Fehler auftritt, ist Ihre Installation in Ordnung. Schreiben Sie zur Überprüfung ein Skript, um mit diesem Formular eine Verbindung zu MySQL herzustellen:

  2. # ein einfaches Skript für den Import von MySQL-Verbindungen pymysql db = pymysql.connect (host = "localhost", user = "root", passwd = "* ", db =" biblioteca ") # Sicher, dies sind Informationen für meine Datenbank # Schließen Sie die Verbindung db.close () *

Geben Sie ihm einen Namen (z. B. "con.py") und speichern Sie ihn auf dem Desktop. Geben Sie im Terminal "cd desktop" und dann $ python con.py ein. Wenn kein Fehler auftritt, sind Sie mit dem MySQL-Server verbunden. Viel Glück!



0

Dies beantwortet meine ursprüngliche Frage nicht vollständig, aber ich denke, es ist wichtig, alle wissen zu lassen, was ich getan habe und warum.

Ich habe mich entschieden, Python 2.7 anstelle von Python 3 weiter zu verwenden, da im Web im Allgemeinen 2.7 Beispiele und Module verbreitet sind.

Ich verwende jetzt sowohl mysqldb als auch mysql.connector, um eine Verbindung zu MySQL in Python 2.7 herzustellen. Beide sind großartig und funktionieren gut. Ich denke, mysql.connector ist letztendlich jedoch langfristig besser.


Ich bin gespannt, ob Sie noch Python 2.7 verwenden. Im Allgemeinen denke ich, dass es wirklich wichtig ist, auf Python 3 umzusteigen, und ich war überrascht, dass sich so viele Programmierer für Python 2.7 für neue Projekte entschieden haben. Wie hat es geklappt?
vy32

@ vy32 Ich denke, Sie werden von Entwicklern, die sich für py27 entscheiden, weniger überrascht sein, wenn Sie bedenken, dass viele Server-Betriebssysteme Python 3 nicht direkt unterstützen. Red Hat Enterprise Linux wurde bis zur neuesten Version und sogar nur dieser Version noch mit Python 2.6 gebündelt hat py27.
Coredumperror

Ein weiterer Grund für die Verwendung von Python 2.7 ist, dass Maya (das Python unterstützt) intern 2.7 verwendet. Übrigens ... wenn Sie in Maya auch über Python eine Verbindung zu MySQL herstellen müssen ... verwenden Sie den reinen Python-MySQL-Connector.
Panofish

0

Ich verwende cymysql mit python3 auf einem Himbeer-Pi, das ich einfach installiert habe von: sudo pip3 installiere cython sudo pip3 installiere cymysql, wobei cython nicht notwendig ist, aber cymysql schneller machen sollte

Bisher funktioniert es wie ein Zauber und ist MySQLdb sehr ähnlich


0

Dies ist ein kurzes Tutorial, wie Python 3.7 mit MySQL funktioniert. Vielen
Dank an alle, von denen ich Antworten auf meine Fragen erhalten habe
- ich hoffe, dies hilft irgendwann jemandem.
-------------------------------------------------- -
Mein System:
Windows Version: Pro 64-Bit

ANFORDERUNGEN .. Laden Sie diese zuerst herunter und installieren Sie sie ...
1. Laden Sie Xampp .. https://www.apachefriends.org/download.html herunter

2. Download Python
https://www.python.org/downloads/windows/

- ------------
// METHODE
--------------
Installieren Sie xampp zuerst nach Abschluss der Installation - installieren Sie Python 3.7.
Sobald Sie beide installiert haben, starten Sie Ihr Windows-System neu.
Starten Sie nun xampp und starten Sie über das Control Panel den MySQL-Server.
Bestätigen Sie die Versionen durch Öffnen von CMD und im Terminaltyp

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.

Hiermit überprüfen Sie die MYSQL-Version

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

Hiermit überprüfen Sie die Python-Version.
Nachdem beide bestätigt wurden, geben Sie Folgendes in das CMD ein ...

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

Nach der Installation von pymysql ist abgeschlossen.
Erstellen Sie eine neue Datei mit dem Namen "testconn.py" auf Ihrem Desktop oder wo auch immer für den schnellen Zugriff.
Öffnen Sie diese Datei mit sublime oder einem anderen Texteditor und fügen Sie diese ein.
Denken Sie daran, die Einstellungen so zu ändern, dass sie Ihre Datenbank widerspiegeln.

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

Jetzt in Ihrem CMD - Typ

c:\Desktop>testconn.py

Und das war's ... Sie sind jetzt vollständig von einem Python-Skript mit MySQL verbunden ...
Viel Spaß ...


0

importiere pymysql

Datenbankverbindung öffnen

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

Bereiten Sie ein Cursorobjekt mit der Methode cursor () vor

cursor = db.cursor ()

sql = "SELECT * FROM item"

cursor.execute (sql)

Rufen Sie alle Zeilen in einer Liste von Listen ab.

results = cursor.fetchall () für Zeile in Ergebnissen: item_title = row [1] comment = row [2] print ("Titel der Elemente sind die folgenden =% s, Kommentare sind die folgenden =% s"% \ (item_title, Kommentar))

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.