Ankündigung

Einklappen
Keine Ankündigung bisher.

DB mit pymysql

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    DB mit pymysql

    Ich habe ein Plugin auf die aktuelle smarthomeNG umgestellt und scheitere an einer Kleinigkeit, die mir aber Rätsel aufgibt.

    mysql Installation ausgeführt, Phyton tests laufen, Datenbank manuell über phpmyadmin angelegt.
    import pymysql
    import mysql.connector
    from mysql.connector import errorcode

    Zugriff über mein Plugin zeigt folgende Meldung.
    in /etc/plugin und im Source finde ich nur pymysql aber nie mysql

    2022-08-02 11:19:39 NOTICE lib.smarthome -------------------- Init SmartHomeNG v1.9.2-master (cc57a0ad) --------------------
    2022-08-02 11:19:39 NOTICE lib.smarthome Running in Python interpreter 'v3.9.2 final', from directory /usr/local/smarthome
    2022-08-02 11:19:39 NOTICE lib.smarthome - on Linux-5.15.32-v7l+-armv7l-with-glibc2.31 (pid=10756)
    2022-08-02 11:19:40 NOTICE lib.smarthome - Nutze Feiertage für Land 'DE', Provinz 'BY', 3 benutzerdefinierte(r) Feiertag(e) definiert
    2022-08-02 11:19:44 ERROR lib.plugin Plugin 'wp' error importing Python package: No module named 'mysql'
    2022-08-02 11:19:44 ERROR lib.plugin Plugin 'wp' initialization failed, plugin not loaded

    database:
    plugin_name: database
    precision: '2'
    driver: pymysql
    connect:
    - host:localhost
    - user:smarthome
    - passwd:smarthome
    - db:smarthome
    - port:3306
    count_logentries: true


    wp:
    plugin_name: aaeigwp
    precision: '4'
    driver: pymysql
    connect:
    - host:localhost
    - user:smarthome
    - passwd:smarthome
    - db: portfolio
    - port:3306
    count_logentries: true
    xmin: '3'
    xmax: '5'
    setlimit: true


    Was verbirgt sich hinter dem Modul 'mysql' ? Auf der letzten smarthomeNG läuft es ohne Meldung

    Danke für jede Hilfe!
    LG Wolfgang
    Zuletzt geändert von schloessl; 02.08.2022, 11:41.

    #2
    Der Fehler ist in Deinem eigenen Code. Python nutzt Unterverzeichnisse als Module, dann muss da drin eine __init__.py liegen, damit man das "Modul" - also deinen eigenen Kram - adressieren kann.

    import mysql.connector <- der ist Schuld, da kommt das "mysql" her

    Kommentar


      #3
      Danke für die schnelle Antwort, damit ist die Suche etwas eingeschränkt.
      Aber ich stehe auf dem Schlauch. In meinem Pluin greife ich auf eine MySQL-Datenbank zu. Hierzu ist das der MySQL.connector zu installieren.

      Das gelang bis jetzt. Kann ich irgendwo ein Beispiel finden? Die —init—.py in Verbindung mit „Modulen“ ist totales Neuland für mich,

      Ein kleiner Lösungshinweis, ein Verweis auf eine Beispiellösung würde mir evtl. weiterhelfen.

      Danke für jede Hilfe,

      LG Wolfgang

      Kommentar


        #4
        Mit pip das Modul MySQL installiert?

        Kommentar


          #5
          wenn du ein fertiges externes Modul nutzen willst, dann musst du es nur wie von henfri beschrieben laden/installieren.

          Folgendes bezieht sich auf den Fall, dass Du Code in Unterverzeichnissen hast und von dort laden willst:

          Schau Dir mal das unifi Plugin an.

          https://github.com/jentz1986/smartho.../develop/unifi
          (geht auch im original-repo).

          Die plugin init referenziert das Modul ubiquiti, über die Verzeichnisstruktur plugins/unifi/ubiquiti, lädt die API aus der Datei unifi.py und gibt ihr einen Alias UnifiAPI. Im geladenen Modul (a.k.a. Verzeichnis) ist die __init__.py leer, und nur die unifi.py ist mit Inhalt versehen.

          Alternativ kann man auch relativ adressieren, der gleiche Aufruf geht auch mit „from .ubiquiti.unifi import API“. Das habe ich in meinem Undok Plugin gemacht.

          Das mit den Modulen habe ich mir eher zusammengeraten - eine sinnige Doku habe ich dazu nicht mehr parat. Ist aber alles Python-Standard. Irgendwo gabs mal n Manual mit „how python addresses files“…

          Kommentar

          Lädt...
          X