Übergabe Schlüssel an Subroutine schlägt fehl

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

]Ich habe zwei Pythonprogramme, ein Hauptprogramm und ein Programm, das Funktionsdefinitionen enthält.

Code: Alles auswählen

# Hauptprogram
import MySQLdb
import Datenbankdef

# Datenbank init
db = MySQLdb.Connect ( ...)

Test = Datenbankdef.DB_Info (db, 4)
print Test

Code: Alles auswählen

# Datei Datenbankdef.py

def DB_Info(DBHandler, Wert):
    Cursor = DBHandler.Cursor()
    Cursor.execute ("SELECT VERSION ()")
    print Cursor.fetchone()
    return (2 * Wert)
Fehlermeldung: DBHandler.Cursor -> diese Funktion ist nicht bekannt. Im Hauptprogramm ist die Funktion bekannt.

Wie kann ich an ein Unterprogramm nicht nur den Zeiger von db übergeben, sonder auch die dazugehörigen Funktionen, die im Hauptprogramm verfügbar sind, damit ich sie im Unterprogramm auch benutzen kann?
BlackJack

@Papp Nase: Echter Quelltext mit den dazugehörigen echten und vollständigen Fehlermeldungen/Stacktraces wäre nicht schlecht.

Denn bei dem was Du zeigst kann das eigentlich nicht passieren, ausser es ist tatsächlich ein Fehler in der Schreibweise, denn es müsste `connect()` und `cursor()` heissen, also mit kleinen Buchstaben.

In dem Zusammenhang wäre vielleicht ein Blick in den Style Guide for Python Code auch nicht schlecht.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Vielen Dank für die Antwort. Es lag tatsächlich an dem kleinen "c", wo ich "Cursor" statt "cursor" schrieb. Jetzt funktioniert es.

Meine beiden kleinen Testprogramme hatten nicht mehr Quelltext als in den beiden Blöcken stand.
BlackJack

Das `Connect()` muss auch klein geschrieben werden. Es gibt die Funktion zwar auch in dieser Schreibweise im `MySQLdb`-Modul, aber das entspricht nicht der offiziellen API: DB API 2.0.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Kannst Du mir mal ein kleines Geheimnis verraten?

Hier mal ein Auszug von dieser Quelle: http://openbook.galileocomputing.de/pyt ... 05093491f1

Code: Alles auswählen

cursor.execute(""" 
   CREATE TABLE autos (marke TEXT, ps INTEGER, baujahr INTEGER) 
    """) 

cursor.execute("INSERT INTO autos VALUES('Volvo', 130, 1995)")

Bei dem ersten cursor.execute (""" stehen drei Gänsefüßchen """, bei dem zweiten nur eins (bei dem Befehl INSERT INTO...).

Ich verstehe das nicht, warum mal drei Gänsefüßchen und mal eins.
BlackJack

Das steht auch im Buch, und zwar bei Zeichenketten (wer hätte das gedacht): http://openbook.galileocomputing.de/pyt ... 15f08f30ad
Antworten