Zum Inhalt springen

DeepDown

Mitglieder
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

Beiträge von DeepDown

  1. Ich bin irgendwie nicht in der Lage meine Beiträge zu editieren, da ist viel Zitat im Beitrag der da eigentlich nicht rein sollte.

    Daher nochmal in Kurzform. In einem Modul werden die Klassen definiert, die für SQLAlchemy als ORM - Vorlagefür Tabellen dienen. In einem anderen Modul sollen in verschiedenen Funktionen Abfragen auf die Tabellen erfolgen. Das Befüllen der ersten Tabelle läuft auch durch,

    class fillTables:
        software = createTables.software
        software_status = createTables.software_status
        def fillSoftwareTable(self):
            createTables.createTables()
            fields=''
            delimiter=''
            softwareList = csvImport('data/software.csv',fields,delimiter)
            for dicts in softwareList:
                sw = createTables.software(id=dicts['SoftwareID'],productName=dicts['ProductID'])
                with Session(engine) as session:
                    session.add(sw)
                session.commit()

    . für die 2. Tabelle brauche ich aber ID's aus der ersten, und in dieser Funktion bekomme ich aber den Fehler, der Tabellenname wäre nicht definiert:

     for stDicts in statusList:
                qry = select(software).where(software.productName == stDicts['name'])
                with Session(engine) as session:
                    res= session.execute(qry)

    >> Traceback (most recent call last):
    >>  File "C:\pycharm_dev\notify2.0bu\notify2.0b\notify2.0\insertData.py", line 80, in <module>
        filling.getStatusData()
      File "C:\pycharm_dev\notify2.0bu\notify2.0b\notify2.0\insertData.py", line 41, in getStatusData
        qry = select(software).where(software.productName == stDicts['name'])
    >> NameError: name 'software' is not defined

    Sollten die Tabellennamen nicht als Klassenattribute bekannt sein ? Ich habe auch versucht die Tabellennamen der Funktion zu übergeben, hat aber auch nicht funktioniert, wie mache ich das Tabellenobjekt in allen Funktionen verfügbar ?

  2. vor 7 Stunden schrieb Brapchu:

    Ich kenne mich jetzt nich mit Python aus aber könnte es hieran liegen?

    Hier rufst du die Funktion mit 3 Übergabeparametern auf.

    Hier ist sie allerdings mit 4 Übergabeparametern definiert.

    Ja ich kenne mich auch nicht besonders in Python aus, es ist aber wohl so dass jeder Funktion die in einer Klasse definiert wird immer den 'self' -Parameter in der Definition haben muss, obwohl er dann bei der Nutzung des Funktion gar nicht übergeben muss. Python hat einige Besonderheiten und es war auch nicht meine Wahl.

     

    vor 5 Stunden schrieb samuelz00:

    Vorweg - ich bin euch unendlich dankbar für eute Hilfe, ich bin nicht mehr weit vom Verzweifeln entfernt und bin froh dass ihr euch die Mühe macht in eurer Freizeit einer älteren Schachtel zu helfen (oder heisst es nun alte Schachtelinnen ? ). Ich halte es nicht für selbstverständlich, und wäre ohne Hilfe vermutlich zu überhaupt nix in der Lage...

     

    Geht es hier um dein Abschlussprojekt

    😰 Schluchz - ja leider. Als Hintergrund, ich habe vor knapp 5 Jahren mit recht genau 40 Jahren eine Umschulung begonnen, die ich kurz vor Projektpräsentation dank eines ver.... Schaglaganfalls unterbrechen musste, und es hat nicht nur Jahre gedauert überhaupt wieder fit genug zu werden, das Amt hat mich aber nicht nehr unterstützt was bedeutet ich konnte ein kostenfreies Praktikum nur in einer gemeinnützigen Einrichtung machen, und als ich oh Wunder tatsächlich etwas fand kam Corona und das Institut wurde weitgehend geschlossen.  Also hatte ich nur die Möglichkeit einmal die Woche per Webmeeting Fragen zu stellen. Der erste Hammer war das mir Python vorgeschrieben wurde (obwohl auch die beiden Ansprechpartner im Insitut es nicht können), das letzte Projekt war in Java geschrieben, dazwischen über 4 Jahre Pause.

    Der eigentliche Klopfer war dann aber dass meine zuständige IHK Frau im Mutterschaftsurlaub ist und mir die Vertretung die Frist nach hinten um ein halbes Jahr kürzte, da sich die Prüfungsordnungen geändert haben. Die Arbeit mit meinem Ansprechpartner im Institut hat sich als sehr kompliziert erwiesen, auch in Foren hatte ich um Hilfe gebeten, ich hatte da nicht im Sinn dass mir ein anderer die Arbeit schreibt, nur der Wunsch mich nicht gleich mit irgednwelchen Dummen Fehlern zu blamieren. Nun habe ich noch eine Woche Zeit, da ich nur diese eine Chance habe versuche ich mich da irgendwie durchzubeissen. Das nur als Hintergrundinfo wenn das Ganze etwas schräg erscheint.

    Zum Inhalt - ist die Funktion im Prinzip statisch (was hier auch Sinn machen würde, ich bekomme eine Liste die von der Klasse dictReader erzeugt wird, da ist es ja auch nicht nötig denke ich mir dass man die Klasse instanziiert, aber gehen würde es

    ## testen.py
    
    import testPy
    testing = testPy
    out = testing.summieren(5,6)
    print(testPy.summieren(1,2))
    print(out)
    
    >> 3
    >> 11

    Ich bekomme es nur leider absolut nicht hin die Import Klasse richtig zu instanziieren, es führt immer wieder zu den Fehlern:

    Ich habe sicherheitshalber die ganze Datei eingebunden

    import CsvImport
    
    software = createTables.software
    software_status = createTables.software_status
    createTables.createTables()
    session = Session(createTables.engine)
    
    importer = CsvImport()
    importer.import_csv()

    mit importer wird ja eine Instanz der Klasse gebildet, die dann doch auf die eigenen Methoden zugreifen können sollte - jedoch heisst es dann

      File "C:\pycharm_dev\test\notify2.0\insertData.py", line 18, in <module>
        importer = CsvImport()
    TypeError: 'module' object is not callable

    oder auch

    AttributeError: module 'CsvImport' has no attribute 'import_csv'

    wenn ich es so versuche

     importer = CsvImport.import_csv()

    Gibt es denn keine Möglichkeit dass man, wie in anderen Sprachen, eine Instanz bildet (die etwa dem Muster JackDaniels = new Whiskey() folgt ?

     

    vor 5 Stunden schrieb samuelz00:

    Ein zweites Problem geht in dieselbe Richtung, durch das Framework SQLAlchemy wird das ganze ORM - gedöns automatisch vorgenommen, die Datei dazu sieht so aus:

    class createDatabase:
        def createDb(self):
            session = Session(engine)
            software = createTables.software
            software_status = createTables.software_status
            createTables.createTables()
    
            fields=''
            delimiter=''
            softwareList = csvImport('data/software.csv',fields,delimiter)
    
            for dicts in softwareList:
                sw = createTables.software(id=dicts['SoftwareID'],productName=dicts['ProductID'])
                session.add(sw)
            session.commit()

    Nun habe ich aber das Problem dass ich in einer zweiten Funktion queries auf den Tabellen durchführen muss, er die Tabellen software und software_status nicht kennt, zB

     for stDicts in statusList:
                qry = select(software).where(software.productName == stDicts['name'])

    wobei software beidemale schon unterkringelt ist. Wie mache ich die Namen der Tabellen den anderen Klassen  bekannst ?

    Hierzu kann ich nur folgendes sagen:

    Du rufst die Funktion import_csv() aus der Datei CsvImport auf.
    Diese existiert zwar darin, allerdings ist sie nochmal in einer Klasse CsvImporter drin.
    Wäre sie dort im global scope, könntest du sie einfach aufrufen.

    Hier mal ein kleines Beispiel, was funktioniert:

    #Datei testen.py
    
    import testPy
    
    print(testPy.summieren(1,2))
    
    ---------------------------------------
    
    #Datei testPy.py
    
    def summieren(a,b):
        return a+b

    Hier wird die Funktion aus der anderen Datei aufgerufen und a+b korrekt returned.

    Sieht die Datei testPy.py jedoch so aus:

    class testKlasse:
        def testSummieren(a,b):
            return a+b

    müsste der Aufruf so lauten: print(testPy.testKlasse.testSummieren(1,2))

    Du  hast natürlich recht, entweder ich rufe eine Instanz auf oder behandele die Funktion als statisch, aber meine Hauptsprachen wie Java oder C# erwarten dann dass eine Methode auch als static gekennzeichnet wird. In diesem Beispiel könnte also die Klasse wie die

    vor 5 Stunden schrieb samuelz00:

     

     

  3. Uh sorry, ich sollte vielleicht besser posten und anschliessend schlafen habs gleichzeitig versucht. Ich hatte den Namen ein paarmal geändert weil ich nicht so ganz verstehe wie eine Klasse einen anderen Namen haben kann als die Datei in der sie sich befindet. Die Version die (auch nicht) lief sah so aus:

    class CsvImport:
    
        def import_csv(self,URI,fields,delimiter):
            if(fields=="" and delimiter==""):
                with open(URI, 'r',newline='') as csvFile:
                    dictReader = DictReader(csvFile)
                listOfContent = list(dictReader)
                return listOfContent
            else:
                with open(URI, 'r') as csvFile:
                    dictReader = DictReader(csvFile, fieldnames=fields, delimiter=delimiter)
                listOfContent = list(dictReader)
            return listOfContent

    Das Problem ist wie gesagt dass das Ganze mal ein einziges Script war, und ich es nun in Klassen und Methoden zerlegen muss, und die Datei liefert leider keine Liste zurück, ich habe auch schon versucht zu debuggen, habe aber keinen Breakpoint setzen können an dem das script angehalten hätte

  4. Hallo,

    ich habe ein sehr langes Pyhtonscript welches ich nun begonnen habe in Klassen und Methoden zu struktureren. Dabei treten aber sehr merkwürdige Fehler auf, ich kann kein Python und bin immer froh wenn ich eine Zeile geschrieben habe ohne dass die IDE meckert. Es geht hier nicht um den Inhalt der Datei, sondern um die Fehlermeldung die ich bekomme wenn ich die Datei insertData.py aufrufe kommt es zur Fehlermeldung  

    D

      File "C:\pycharm_dev\test\notify2.0\insertData.py", line 17, in <module>
        softwareList = CsvImport.import_csv()
    AttributeError: module 'CsvImport' has no attribute 'import_csv'

    Obwohl es eine Methode mit dem Namen in der Datei gibt. Eine andere Version der Datei ist noch schlimmer . Es exisitiert eine Tabelle software, und solange das alles in einem Spaghetticode war lief es auch, plötzlich soll es die Software-Objekte nicht mehr geben ? Ich denke dass ich da (wie gesagt die Sprache ist mir nicht bekannt, wobei ich mir die Sachen dann aus anderen Sprachen zusammenreime. Aber wieso will er die Tabelle software bzw. software.productName plötzlich nicht mehr kennen ?

     def getStatusData(self):
            session = Session(engine)
            statusFieldNames = ['name', 'date', 'time', 'oldVersion', 'currentVersion']
            delimiter =';'
            statusList = csvImport('data/notify_mail_sorted.txt',statusFieldNames,';')
            locale.setlocale(locale.LC_ALL,'en_US') ## zum Einlesen des Formats '1 Jan 2020'
            lastID = 0
            statTemp = ''
            lastDate = datetime.strptime('1 Jul 2000 00:00:00', '%d %b %Y %H:%M:%S')  ## Anfangsdatum für Vergleich
            for stDicts in statusList:
                qry = select(software).where(software.productName == stDicts['name'])
                res= session.execute(qry)

    Ich brauche das dringend für ein Projekt, habe aber keine Lehrer oder Verantwortlichen, die Sprache selbst ist mir fremd. Wie behebe ich dieses beiden Fehler ? Es gibt noch etliche andere aber ich werde dann versuchen ein anderes Fourm zu Rate zu ziehen, aber wenn ich diese beiden Fehler weg hätte wäre es schonmal ein Anfang. Hilfe würde ich sehr schätzen

    createTables.py CsvImport.py Data.py ignore.py insertData.py pyvenv.cfg testing.sqlite

  5. Hallo,

    ich habe vor Jahren eine Ausbildung zum Anwendungsentwickler begonnen, musste sie aber gegen Ende des Praktikums für mehrere Jahre unterbrechen, von der zuständigen IHK wurde ich quasi auf Eis gelegt, d.h. ich sollte mich für die Prüfung anmelden wenn ich gesundheitlich dazu in der Lage bin, die Vorraussetzungen für die Prüfungen sind erfüllt. Das ganze war im Rahmen einer ausserbetrieblichen Ausbildung, allerdings wird dort keine Anwendungsentwicklung mehr gemacht, der einzige Lehrer der es konnte ist nicht mehr da, dadurch bin ich auch nicht mit einer Berufsschule in Kontakt gekommen, es gibt da niemanden den ich fragen könnte.

    Eigentlich sollte ich auch nochmal für ein paar Monate ins Praktikum, das aber aufgrund von Corona verschoben werden sollte, ich konnte es nie antreten da die Bedingungen dafür nicht gegeben waren, allerdings habe ich einmal in der Woche ein Webmeeting, allerdings nicht mit einem Ausbilder sondern dem Verantwortlichen der Abteilung. Nun habe ich nicht mehr allzuviel Zeit die Prüfung noch zu schreiben und habe mich zur praktischen Prüfung angemeldet.

    Mein Problem ist dass es schon etwas her ist dass ich gelernt habe wie genau die Prüfung am besten aufgebaut wird, im Internet habe ich auch entweder nur sehr Allgemeines gefunden oder so spezielles dass mir auch das nur bedingt hilft.

    Leider ist meine Sachbearbeiterin der IHK an die ich mich in solchen Fällen gewandt habe im Mutterschaftsurlaub. Gibt es noch andere Möglichkeiten mit Menschen in Kontakt zu treten die sich gut mit der Thematik auskennen ? Ich bin natürlich auch gern bereit über alles was ich will kann und brauche ausführlich zu schreiben, allerdings nicht in einem so öffentlichen Rahmen  wie diesem. Ich habe noch 6 Wochen Zeit mein Projekt fertigzustellen, was heisst dass die Zeit auch ein wenig drängt.

    Hat jemand eine Idee wie ich da weiter verfahren könnte ? Für jede Hilfe schonmal einen Dank vorweg.

     

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...