MYSQL Connection -- Verbindung wird nicht aufgebaut

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Hallo,

bin relativ neu hier und habe direkt schon eine frage. Und zwar möchte ich gerne mit Python Daten aus einer MYSQL Datenbank auslesen. Wo genau der Fehler liegt weiß ich leider auch nicht. Aber ich habe eine Fehlermeldung bekommen.

Der Code:

Code: Alles auswählen

from mysql.connector import (connection)

Servername = --Hier kommt der Servername hin--
Benutzer   = --Hier kommt der Benutzername hin--
Passwort   = --Hier kommt das Passwort hin--
Datenbank  = --Hier kommt der Datenbankname hin--


try:
  cnx = connection.MySQLConnection(user=Benutzer, password=Passwort,
                                 host=Servername,
                                 database=Datenbank)
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cnx.close()

Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/lonnieschemann/.local/lib/python3.10/site-packages/mysql/connector/network.py", line 574, in open_connection
    self.sock.connect(sockaddr)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/lonnieschemann/Schreibtisch/schemannKurierEmail.py", line 9, in <module>
    cnx = connection.MySQLConnection(user=Benutzer, password=Passwort,
  File "/home/lonnieschemann/.local/lib/python3.10/site-packages/mysql/connector/connection.py", line 116, in __init__
    self.connect(**kwargs)
  File "/home/lonnieschemann/.local/lib/python3.10/site-packages/mysql/connector/abstracts.py", line 1052, in connect
    self._open_connection()
  File "/home/lonnieschemann/.local/lib/python3.10/site-packages/mysql/connector/connection.py", line 494, in _open_connection
    self._socket.open_connection()
  File "/home/lonnieschemann/.local/lib/python3.10/site-packages/mysql/connector/network.py", line 576, in open_connection
    raise errors.InterfaceError(
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'sql107.epizy.com:3306' (110 Connection timed out)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode
    exec(code, self.locals)
  File "/home/lonnieschemann/Schreibtisch/schemannKurierEmail.py", line 12, in <module>
    except mysql.connector.Error as err:
NameError: name 'mysql' is not defined

Vielen Dank schon mal im Vorraus.
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die untere Fehlermeldung bekommst du, Weil du die abgefangene Exception nicht importiert hast. Das musst du machen.

Und der Hauptfehler liegt in der unerreichbarkeit des servers. Das liegt am Netzwerk oder dessen Konfiguration.
Sirius3
User
Beiträge: 17745
Registriert: Sonntag 21. Oktober 2012, 17:20

Eingerückt wird immer mit 4 Leerzeichen pro Ebene eingerückt, nicht 2.
Konstanten schreibt man komplett groß, also SERVER_NAME.
Und mit dem Server ist auch das Problem, denn Du kannst keine Verbindung dazu herstellen, das sagt der TimeoutError.

Dann hast Du in Deinem Programm einen Fehler, denn mysql.connector wird nicht importiert, so dass Du auf mysql.connector.Error zugreifen könntest. Du importierst nur den Namen `connection` und das führt zu den weiteren Fehlerausgaben.

Versuchst Du direkt von zu Hause aus auf eine Datenbank bei einem Web-Hoster zuzugreifen? Das wird nicht funktionieren, weil der Zugriff auf deren internes Netz beschränkt ist.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Hallo an alle, die mir geantwortet haben,

erstmal vielen Dank. Und dann:
__deets__ hat geschrieben: Sonntag 24. Juli 2022, 11:50 Die untere Fehlermeldung bekommst du, Weil du die abgefangene Exception nicht importiert hast. Das musst du machen.
Frage: Wie mache ich das? (Sorry kenn mich da noch nicht so aus)

Außerdem:
Sirius3 hat geschrieben: Sonntag 24. Juli 2022, 11:52 Konstanten schreibt man komplett groß, also SERVER_NAME.
Auch bei Variablen?
Sirius3 hat geschrieben: Sonntag 24. Juli 2022, 11:52 Versuchst Du direkt von zu Hause aus auf eine Datenbank bei einem Web-Hoster zuzugreifen? Das wird nicht funktionieren, weil der Zugriff auf deren internes Netz beschränkt ist.
Ja, versuche ich. Gibt es da irgendeine Konfigurationseinstellung, die ich beim Hoster ändern kann, damit das funktiioniert?

Nochmals Vielen Dank an die, die mir geantwortet haben und vielleicht noch antworten werden.
Sirius3
User
Beiträge: 17745
Registriert: Sonntag 21. Oktober 2012, 17:20

Um es kurz zu machen: das was Du vorhast geht nicht. Das kann man auch nicht ändern.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Schade.

Hat dann vielleicht einer von euch einen anderen generellen Lösungsvorschlag für mich?

Mein Problem: Ich möchte ein Script schreiben, welches meine E-Mails ausliest und diese in eine Datenbank einträgt, welche ich per PHP auf meinem Webserver ansehen und bearbeiten kann. Normalerweise würde ich ein PHP-Script schreiben, welches das für mich macht,als ich das gemacht hatte, zeigte mir die Seite eine Fehlermeldung an, die anscheinend heißen sollte, dass der Hoster nicht will, dass ich über IMAP irgendwelche Verbindungen aufbaue.


Geht das irgendwie?
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na du kannst doch die abgerufenen emails an eine PHP-Seite schicken. Damit das die dann in die Datenbank packt.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Und wie? Mit Link und get oder wie?
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mit POST natürlich, so wie man letztlich jedes Formular abschickt.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Aber wie geht das mit python?
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du auch nur mal eine Sekunde danach gesucht? "Python HTTP request abschicken"? Dann solltest du eigentlich mit Informationen erschlagen werden. Geht mir zumindest so.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Hab gerade mal danach gesucht. Scheint relativ einfach zu sein. Dann noch eine Frage:

Fällt euch irgendeine Lösung ein zu dem folgenden Problem:

Ich möchte gerne E-Mails verschicken (aber die Daten sollen aus der Datenbank bzw. zumindest aus einem PHP Script kommen) aber die Verbindung mit IMAP wird ja verweigert.
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Emails schickt man ja auch nicht per IMAP, sondern per SMTP. Zusammen mit deinen Credentials sollte das eigentlich mehr oder minder von ueberall funktionieren, du kannst ja auch Emails von jedem Rechner/Smartphone verschicken. Wenn die Mails auf dem Server verschickt werden sollen, dann hat da aber natuerlich wieder dein Hoster ein Woertchen mit zu reden. Wenn das "seine" emails sind, sollte es eigentlich klappen.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

was ist mit "seine Emails" gemeint?
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na wenn die zu verschickenden Emails beim Hoster selbst gehostet sind. Man bekommt ja da ueblicherweise auch Email-Adressen mit. Die sollten dann ja auch verschickbar sein. Bei anderen Emails-Adressen verhindert er das ggf, als SPAM-Abwehr. Musst du ausprobieren.
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Edit: da war noch ne Antwort, die wohl ueberarbeitet/geloescht wurde.


Den Satz verstehe ich nicht. Du kannst natuerlich prinzipiell auch via Python-Skript irgendwas verschicken, aber dann wird es vermutlich irgendwann fraglich, warum man ueberhaupt einen solchen VServer benutzt, wenn man eh alles lokal laufen laesst. Da wuerde ich eher zu einem anderen Anbieter/Upgrade des Paketes raten, damit du sowas bekommst. Denn das ist ja kein Naturgesetz, dass du da so blockiert wirst.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Ja, hatte ich gelöscht, weil ich mich verschrieben hatte. Meinte eigentlich: Der Anbieter blockert die Emails, hab ich ausprobiert und EMail Accounts beim Anbieter kosten extra.

Ja, wenns nicht anders geht wechsle ich wahrscheinlich den Anbieter.

Muss man dass Thema, wenn es beendet ist, als erledigt oder so markieren? (wie gesagt: bin sehr neu hier)
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein, so ein Feature gibt's hier nicht. Das bleibt einfach offen.
ennolichmannse
User
Beiträge: 14
Registriert: Sonntag 24. Juli 2022, 10:14

Ok. Danke nochmal an alle die mir geholfen haben.
Antworten