Seite 1 von 1

Verbindung zu einer DB herstellen und etwas ausgeben

Verfasst: Mittwoch 28. Oktober 2020, 17:01
von m_mattia
Hallo Zusammen,
Mein Ziel ist eine Verbindung zu meiner MySQL-DB herzustellen. Ich habe als Vorlage folgendes Verwendet. https://www.w3schools.com/python/python ... select.asp Die DB ist zurzeit eine lokale die von XAMPP gestartet ist und funktioniert soweit auch. Der Port der DB ist unverändert und somit 3306, der Username und das Passwort ebenfalls. Danke für die Antworten schon im Voraus.

Mein Code:

Code: Alles auswählen

import importfile as ImF
import userData as Ud


class DB:

    mydb = ImF.mysql.connector.connect(
        host="127.0.0.1",
        user="root",
        password="",
        database="ch283952_tst_citizen",
        )
    print(mydb)

    pycursor = mydb.cursor()

    mydb.mycursor.execute("SELECT firstname FROM citizen LIMIT 1")

    myresult = mydb.mycursor.fetchone()

    print(myresult)


if __name__ == "__main__":
    DB()
Fehlermeldung:
AttributeError: 'MySQLConnection' object has no attribute 'mycursor'

Re: Verbindung zu einer DB herstellen und etwas ausgeben

Verfasst: Mittwoch 28. Oktober 2020, 18:09
von Sirius3
@m_mattia: Du benutzt Klassen falsch. Schau Dir nochmal in Deinem Tutorial an, wie es richtig geht.
Bisher brauchst Du gar keine Klasse, sondern das ist eigentlich eine Funktion.
Benutze keine kryptischen Abkürzungen. Module werden wie Funktionen und Variablennamen komplett klein geschrieben.
Die Modulenamen lassen auch befürchten, dass die Module nicht sinnvoll aufgeteilt sind.

Code: Alles auswählen

import mysql

def main():
    mydb = mysql.connector.connect(
        host="127.0.0.1",
        user="root",
        password="",
        database="ch283952_tst_citizen",
        )
    print(mydb)
    pycursor = mydb.cursor()
    mydb.mycursor.execute("SELECT firstname FROM citizen LIMIT 1")
    myresult = mydb.mycursor.fetchone()
    print(myresult)

if __name__ == "__main__":
    main()
Jetzt bleibt die Frage, warum Du denkst, dass mydb ein Attribut mycursor haben sollte?
Die ganzen my-Präfixe sind übrigens unsinnig, solange es nicht auch ein yourresult gibt.

Re: Verbindung zu einer DB herstellen und etwas ausgeben

Verfasst: Mittwoch 28. Oktober 2020, 18:21
von m_mattia
@Sirius3: Das ich die Funktion in der Klasse vergessen habe, weiss ich nicht wie mir das passiert ist (normalerweise habe ich es immer gemacht). Zu den kryptischen Abkürzungen, ich habe ein Import-File erstellt bei dem ich alle Import tätige, da ich sonst bei jedem File viele Importe tätigen muss und auch keine übersehe (vielleicht überdenke ich diese Lösung mit dem Import-File nochmal). Ich habe aber den Code angepasst und er funktioniert jetzt. Danke

Re: Verbindung zu einer DB herstellen und etwas ausgeben

Verfasst: Mittwoch 28. Oktober 2020, 18:27
von __blackjack__
@m_mattia: Was auch immer Du als „Import-File“ bezeichnest, Du hast sehr wahrscheinlich nicht verstanden wie Importe in Python funktionieren und/oder missbrauchst das massiv. Was in einem Modul benötigt wird, das importiert man auch *dort* und nicht irgendwo anders wo dann am Ende sehr wahrscheinlich mehr importiert wird als benötigt wird. Das dient auch als Dokumentation wovon ein Modul abhängt und das man leicht sehen kann, was von wo kommt.

Re: Verbindung zu einer DB herstellen und etwas ausgeben

Verfasst: Montag 9. November 2020, 15:41
von naheliegend
Ist da nicht auch irgendwas mit den cursorn durcheinander?

Hätte nämlich:

Code: Alles auswählen

import mysql

def main():
    mydb = mysql.connector.connect(
        host="127.0.0.1",
        user="root",
        password="",
        database="ch283952_tst_citizen",
        )
    print(mydb)
    pycursor = mydb.cursor()
    pycursor.execute("SELECT firstname FROM citizen LIMIT 1")
    myresult = pycursor.fetchone()
    print(myresult)

if __name__ == "__main__":
    main()

Re: Verbindung zu einer DB herstellen und etwas ausgeben

Verfasst: Donnerstag 12. November 2020, 14:53
von webbygirl21
Hallo Leute! Ich bräuchte auch Hilfe zu diesem Thema und wenn ich soetwas lese wie "Du hast sehr wahrscheinlich nicht verstanden wie Importe in Python funktionieren", dann passt das auch zu mir denke ich :) Jetzt aber die wichtige Frage: wo kann ich das ändern? Hab ihr Tipps für gute Tutorials, Bücher etc. bei denen ich genau sowas sauber lernen kann?

Re: Verbindung zu einer DB herstellen und etwas ausgeben

Verfasst: Donnerstag 12. November 2020, 19:27
von noisefloor
Hallo,

zum Lernen ist immer das offizielle Python-Tutorial unter docs.python.org gut.

Gruß, noisefloor