Seite 2 von 3

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Samstag 9. September 2017, 13:59
von __deets__
Da kann es schon Unterscheide geben. Je nach Pfad_Variable zB.

Am besten ist du lässt dir mal mit "which pip3" ausgeben, welches pip das war. Daneben sollte dann auch ein Python liegen, und in dessen Site packages sollte das MySQL Paket installiert worden sein.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Samstag 9. September 2017, 14:13
von kbr
Hendy84 hat geschrieben:Wenn ich jedoch ein Script laufen lasse, in dem nur "import PyMySQL" steht, kommt als Fehlermeldung:
Andere Möglichkeit: Python ist case-sensitive und PyMySQL schreibt man klein: 'import pymysql'.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Samstag 9. September 2017, 14:19
von Melewo
Warum bist Du nicht bei import MySQLdb geblieben.
Hendy84 hat geschrieben:Mein Skript sieht aktuell so aus:

Code: Alles auswählen

import MySQLdb
import sys, _mysql
import mysql.connector

config = {
  'user': 'root',
  'password': 'root',
  'host': 'localhost:8889',
  'database': 'inventory',
  'raise_on_warnings': True,
}

link = mysql.connector.connect(**config)

try:
    connection = mysql.connector.connect \
                 (host = "localhost:8889", user = "root", passwd = "")

except:
    print("Keine Verbindung zum Server")
    sys.exit(0)

cursor = connection.cursor()

cursor.execute("CREATE DATABASE IF NOT EXISTS firma")
connection.commit()

cursor.close();

connection.close()

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Samstag 9. September 2017, 15:38
von Melewo
Also, das verstehe ich nicht alles, was der schreibt, vielleicht bringe ich da auch etwas durcheinander, doch anschauen kannst Du es Dir ja einmal:

http://www.seanbehan.com/install-mysqld ... -mac-os-x/

Und OS X habe ich zwar nicht, doch sollte nicht wenigstens der Import einheitlich sein und der ist bei mir "import MySQLdb" und nicht "import PyMySQL".
Hendy84 hat geschrieben:Wenn ich jedoch ein Script laufen lasse, in dem nur "import PyMySQL" steht, kommt als Fehlermeldung:

Code: Alles auswählen

   import PyMySQL
ModuleNotFoundError: No module named 'PyMySQL'

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Samstag 9. September 2017, 16:38
von Sirius3
@Hendy84: wenn Du mysqlclient verwendest, dann heißt das Paket »MySQLdb« (das Du ja auch importierst) und nicht »mysql«. »_mysql« solltest Du auch nicht importieren, weil der Unterstrich zeigt, dass das nur für den internen Gebrauch gedacht ist.
Wenn Du PyMySQL verwenden willst, heißt es »import pymysql«.

Zu Deinem Code: Warum rufst Du connector.connect zweimal auf? Nutze niemals nackte excepts. Dadurch wird wirklich jeder Fehler verschluckt, so dass man gar nicht herausfinden kann, was denn nun falsch ist.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Samstag 9. September 2017, 16:47
von Hendy84
Ich hatte mir online ein Tutorial gesucht: https://www.tutorialspoint.com/python3/ ... access.htm
Dort schrieben sie als Beispielcode zum ersten Aufrufen:

Code: Alles auswählen

import PyMySQL
Da hab ich mir anscheinend kein gutes Tutorial rausgesucht, wenn die schon so einfache Sachen wie Groß/Kleinschreibung in ihren Beispielcodes falsch machen - so macht man dann als Anfänger gleich die Fehler nach und wundert sich, warum es nicht funktioniert.

Also danke für den Tipp! Werde ich gleich nochmal ausprobieren.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Samstag 9. September 2017, 17:00
von Sirius3
@Hendy84: ja das ist ein sehr schlechtes Tutorial. Nackte excepts, Stringformatierung mit SQL-Statements, etc, etc. Am besten nicht lesen. Da mußt Du Dir danach wieder so viel abgewöhnen.
Das wichtigste steht eigentlich schon in der PyMySQL-Dokumentation.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Sonntag 10. September 2017, 18:48
von Hendy84
Ich habe jetzt mal Folgendes versucht:

Code: Alles auswählen

import MySQLdb
import pymysql 
import sys

conn = pymysql.connect(host='localhost', port=8889, user='root', password='root', db='inventory')

cur = conn.cursor()
cur.execute("SELECT * FROM users")

print(cur.description)
print()

for row in cur:
    print(row)

cur.close()
conn.close()
Als Ergebnis erhalte ich:

Code: Alles auswählen

Traceback (most recent call last):
  File "/Users/.../Desktop/Programmieren/DB.py", line 9, in <module>
    cur.execute("SELECT * FROM users")
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/cursors.py", line 166, in execute
    result = self._query(query)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py", line 856, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py", line 1057, in _read_query_result
    result.read()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py", line 1340, in read
    first_packet = self.connection._read_packet()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py", line 1014, in _read_packet
    packet.check_error()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py", line 393, in check_error
    err.raise_mysql_exception(self._data)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/err.py", line 107, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1146, "Table 'inventory.users' doesn't exist")
Immerhin gibt er jetzt nicht mehr den Fehler aus, dass das Modul nicht installiert sei, trotzdem sagen mir die Fehlermeldungen erst einmal nichts - außer natürlich ganz unten, dass die Tabelle users in der Datenbank inventory nicht exisitert (weil besagte DB namens inventory aktuell noch leer, ohne jegliche Tabellen ist).

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Montag 11. September 2017, 05:33
von Melewo
Hendy84 hat geschrieben:Ich habe jetzt mal Folgendes versucht:

Code: Alles auswählen

import MySQLdb
import pymysql 
import sys
Du solltest nur das importieren, was Du verwenden möchtest.

Wie Du richtig erkannt hast, lässt sich nur eine bereits angelegte und mit ein paar Daten gefüllte Tabelle abfragen. Also anlegen, füllen, abfragen, nicht umgekehrt.
Falls danach alles laufen sollte, so wäre es auch nicht verkehrt, wenn Du den nach Dir kommenden Ratsuchenden den einen oder anderen Hinweis hinterlassen würdest, welche Schritte bei Dir zu einer erfolgreichen Installation unter OS X führten.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Montag 11. September 2017, 07:25
von snafu
Hendy84 hat geschrieben:

Code: Alles auswählen

(...)
pymysql.err.ProgrammingError: (1146, "Table 'inventory.users' doesn't exist")
Immerhin gibt er jetzt nicht mehr den Fehler aus, dass das Modul nicht installiert sei, trotzdem sagen mir die Fehlermeldungen erst einmal nichts - außer natürlich ganz unten, dass die Tabelle users in der Datenbank inventory nicht exisitert (weil besagte DB namens inventory aktuell noch leer, ohne jegliche Tabellen ist).
Alles andere gehört zum sogenannten Traceback. Das ist der Aufrufverlauf, der am Ende in den Fehler gemündet hat. In der ersten Zeile findest du deinen eigenen Aufruf und danach quasi was er bewirkt hat. Tracebacks sind sehr hilfreich, wenn man eigene Programme mit hintereinander geschalteten Aufrufen hat (was ja die Regel ist) und die Fehlerursache im eigenen Programm finden will oder wenn man fremde fehlerhafte Programme debuggen muss. In deinem Fall ist es so, dass in einer leeren Tabelle eben keine Abfragen gemacht werden können. Das ist also sozusagen ein geplanter Fehler: Die Bibliothek selbst ist in Ordnung, der Feher liegt beim Benutzer.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Montag 11. September 2017, 11:49
von Hendy84
Ah, verstehe, das ist natürlich logisch. Dann werde ich's nochmal mit angelegter Tabelle machen.
Die Modul-Installation und Import scheinen ja dann aber nun ordnungsgemäß zu funktionieren.
Dann werde ich heute Abend nochmal meine nun durchgeführten Schritte dahin posten, damit andere Ratsuchende mit ähnlichem Problem unter OS X den Lösungsweg finden.

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Dienstag 12. September 2017, 18:25
von Hendy84
Für alle, die dasselbe oder ein ähnliches Problem haben wie ich, hier ein Lösungsweg, der anscheinend funktioniert:

Code: Alles auswählen

$ brew uninstall mysql
$ brew install mysql-connector-c
$ brew unlink mysql-connector-c
$ brew install mysql
$ pip install mysql-python
Wahlweise ließen sich danach mysqlclient bzw. pymysql installieren.

Gefunden hier: https://github.com/PyMySQL/mysqlclient- ... issues/169

Re: MySQL-Modul in Python 3.6.1 unter OS X wird nicht gefunden

Verfasst: Dienstag 12. September 2017, 22:52
von kbr
Hendy84 hat geschrieben:Für alle, die dasselbe oder ein ähnliches Problem haben wie ich, hier ein Lösungsweg, der anscheinend funktioniert:
Es ist gut wenn Du Deinen Lösungsweg anderen zeigst. Aber einen, der definitiv funktioniert, hatte ich bereits gepostet.