Daten Eintragen in die Mysql Datenbank Scheitert.

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
oldboyJR
User
Beiträge: 69
Registriert: Donnerstag 28. März 2024, 16:19

Jetzt haltet euch fest ich rätsle seit Tagen über diese SQL Anweisungen und kam nicht weiter. Zwischendurch versuchte ich spyder 6 standallone zu installieren. Plötzlich sehe ich die Variablen im Variablenmanager nicht. Und ganz komisch wenn ich eine def funkt_ion(): geschrieben hatte und sie dann mit def funkt_ion() auslösen wollte wurde ein Fehler angezeigt. Das selbe einfach so als Programm wurde anstandslos durchgeführt. Jetzt das verrückte!! im Variablenmanager kann man wenn man auf das drei balke Piktogramm für Menu/unterpunkte Anzeigeoptionen aktivieren und deaktivieren. Bei mir waren die callabel und Module ausklammern aktiviert. Jetzt funktioniert endlich meine SQLabfrage für die def funkt_ion(): !! Aber der Variablenmanager zeigt results als list oder data tuple an aber sie lassen sich nicht editieren. wenn man das versucht zeigt die konsole
Exception in comms call get_value:

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\comms\commbase.py", line 343, in _handle_remote_call
return_value = self._remote_callback(
^^^^^^^^^^^^^^^^^^^^^^

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\comms\frontendcomm.py", line 273, in _remote_callback
return super(FrontendComm, self)._remote_callback(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\comms\commbase.py", line 356, in _remote_callback
return self._remote_call_handlers[call_name](
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\console\kernel.py", line 225, in get_value
return ns[name]
~~^^^^^^

KeyError: 'result'

Exception in comms call get_value:

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\comms\commbase.py", line 343, in _handle_remote_call
return_value = self._remote_callback(
^^^^^^^^^^^^^^^^^^^^^^

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\comms\frontendcomm.py", line 273, in _remote_callback
return super(FrontendComm, self)._remote_callback(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\comms\commbase.py", line 356, in _remote_callback
return self._remote_call_handlers[call_name](
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\console\kernel.py", line 225, in get_value
return ns[name]
~~^^^^^^

KeyError: 'result'
Mein Lösung unter phython 3 ist die Abfrage besser ohne def funkt_ion():

Code: Alles auswählen

import mysql.connector
Error = None
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="boomer_obj",
    port="3306")

cursor = conn.cursor()
cursor.execute("SELECT * from unterstuezer")
result = cursor.fetchall()  # alles steht im Variablenmanager
print(result)  # schreibt alles durcheinander
cursor.close()
for data in result:
    print("Nummer: " + str(data[0]) + "; Text: " + data[1], data[2],
          data[3], data[4], data[5], data[6], data[7])  
    #schreibt alles schön untereinander
    # Man sieht wieviele indexe pro data hat 
    #und kann die Printanweisung dahin anpassen 

Sirius3
User
Beiträge: 18309
Registriert: Sonntag 21. Oktober 2012, 17:20

@oldboyJR: die Variablen einer Funktion existieren nur, so lange man in der Funktion ist. Wenn Du eine Funktion aufrufst, dann hast Du danach nur Zugriff auf die Werte, die Du per `return` zurückgibst. Programme wie spider können nur globale Variablen anzeigen. Das mag beim interaktiven Arbeiten noch gerade so akzeptabel sein, für richtige Programme mußt Du Dich aber von Deiner Arbeitsweise mit spider verabschieden.
Benutzeravatar
noisefloor
User
Beiträge: 4222
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Mein Lösung unter phython 3 ist die Abfrage besser ohne def funkt_ion():
Kann ja sein. Interessant wäre hier aber eine gute Lösung für Python...

Gruß, noisefloor
Benutzeravatar
sparrow
User
Beiträge: 4577
Registriert: Freitag 17. April 2009, 10:28

Jetzt mal ernsthaft. Jemand der schreibt, dass seine Funktion "funkt_ion" heißt ist schlicht ein Troll.
oldboyJR
User
Beiträge: 69
Registriert: Donnerstag 28. März 2024, 16:19

Richtig die in der Funktion verwendeten und ermittelten Variablen sind nur gültig in der Funktion. Man kann sie in der Konsole sehen wenn man für jede Variable eine print () macht. Ähnlich funktioniert der Variablenmanager. Er listet alle Werte aus dem Programm die vorgegeben , generiert und nicht überarbeitet wurden. Im Debugmodus Schritt für Schritt bzw bis zum Breakpoint zeigt er aber auch was er gerade benutzt hat und was im Speicher steht. Bis zu einem bestimmten punkt bleiben Werte im Speicher.(solange die konsole nicht geschlossen bzw neu gestartet wird. Um absolut sicher zu sein die richtigen Werte zu benutzen muss man das Überladen beherschen oder man speichert jeden ermittelten Wert in ein Dokument TXT CSV BIN oder in eine Maske wie Tkinter wxgladde Html oder in einen Datensatz wie mysql um diese Daten in der nächsten Funktion durch lesen wieder hervorbringt weiterverarbeitet und das Ergebnis wieder sichert. Funktionsaufrufe die werte Abfrage innerhalb der Funktione sind instanzen und bleiben in der Funktion erhalten bis zum verlassen. Diese Funktion des Variablenmanager gab es auch in anderen IDE wie Eqlipse. Sorry globale Variablen bleiben so lange im Speicher bis man den Computer den interpreter Konsole oder die classen ausschaltet/löscht es sei denn die globale Variable ist wo anders gespeichert?? Und wird beim heraufladen wieder aktiv?? Und deshalb gefährlich für andere Programme innerhalb der classen , Interpreters,Computers! Wenn man eine globale Variable hat könnte man sie im nächsten Programm aufrufen ohne zu importieren?
Antworten