Vai al contenuto

Installare libreria connessione a DB MySQL su UR32

Home Forum Soluzioni di comunicazione cellulare Milesight Installare libreria connessione a DB MySQL su UR32

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #84716
    Anonimo
    Inattivo

    Su un router Milesight UR32-L04EU-W-485 stò leggendo dei dati Modbus da un dispositivo con la seriale 485 (con la procedura nativa).

    Ora siccome avrei la necessità di inviare questi dati ad un database MySQL pensavo di realizzare uno script Python per per raggiungere lo scopo. La mia idea era quella di installare la libreria connettore MySQL sul router, ho provato tramte il comando pip da putty, ma ho questo errore:

    ROUTER(Python)# pip install mysql-connector-python
    Collecting mysql-connector-python
      Downloading https://files.pythonhosted.org/packages/a9/98/3cd603a0130a4bc088942b51c142ce13de3bf21a26b4f960527859a780da/mysql_connector_python-8.0.33-py2.py3-none-any.whl (390kB)
        100% |████████████████████████████████| 399kB 1.3MB/s
    Collecting protobuf<=3.20.3,>=3.11.0 (from mysql-connector-python)
      Downloading https://files.pythonhosted.org/packages/74/4e/9f3cb458266ef5cdeaa1e72a90b9eda100e3d1803cbd7ec02f0846da83c3/protobuf-3.18.0-py2.py3-none-any.whl (174kB)
        100% |████████████████████████████████| 184kB 1.0MB/s
    Installing collected packages: protobuf, mysql-connector-python
    Exception:
    Traceback (most recent call last):
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/basecommand.py", line 228, in main
        status = self.run(options, args)
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/commands/install.py", line 335, in run
        use_user_site=options.use_user_site,
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/req/__init__.py", line 49, in install_given_reqs
        **kwargs
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/req/req_install.py", line 748, in install
        use_user_site=use_user_site, pycompile=pycompile,
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/req/req_install.py", line 961, in move_wheel_files
        warn_script_location=warn_script_location,
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/wheel.py", line 499, in move_wheel_files
        h, l = rehash(f)
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/wheel.py", line 60, in rehash
        for block in read_chunks(f, size=blocksize):
      File "/mnt/mmcblk0p1/pysdk/lib/python2.7/site-packages/pip-10.0.1-py2.7.egg/pip/_internal/utils/misc.py", line 212, in read_chunks
        chunk = file.read(size)
    MemoryError
    #84721
    Sergio Bertana
    Amministratore del forum

    Stai cercando di installare mysql-connector-python su un UR32 che ha:

    • Python 2.7 embedded
    • pip 10.0.1
    • Risorse limitate (RAM e memoria flash), come mostra il MemoryError

    L’installazione fallisce perchè

    • mysql-connector-python >= 8.x richiede Python 3.6+ per alcune funzionalità, anche se dice “py2.py3”.
    • Il pacchetto è grande (~400 kB) e il router ha memoria limitata, pip non riesce a caricarlo in RAM per l’installazione.
    • Con Python 2.7 + pip vecchio + RAM limitata è quasi impossibile installare pacchetti moderni complessi.
    • In pratica, l’UR32 non ha abbastanza RAM per compilare/unpackare il pacchetto.
    #84727
    Sergio Bertana
    Amministratore del forum

    Ho provato ad installare pacchetti più leggeri:

    pip install PyMySQL, PyMySQL è scritto totalmente in Python, ma anche questa installazione fallisce.

    pip install mysqlclient, mysqlclient è un wrapper C per MySQL / MariaDB. Per compilare, pip cerca mysql_config, che fa parte di MySQL/MariaDB development libraries. ma su UR32:

    • Non ci sono compilatori C (gcc ecc.)
    • Non ci sono librerie di sviluppo MySQL
    • Lo spazio e la RAM sono limitati

    Quindi credo che non sia possibile gestire la connessione a MySQL direttamente dal router.

    #84741
    Sergio Bertana
    Amministratore del forum

    Aggiungo un update alla discussione, ho ricevuto da Milesight una versione aggiornata del SDK la 5.0.4 download.

    Ho aggiornato il router con la nuova versione SDK (Per aggiornare l’SDK occorre disinstallare quella precedente), poi ho aggiornato il PIP.

    ROUTER(Python)# pip install --upgrade pip
    Requirement already satisfied: pip in /mnt/mmcblk0p1/pysdk/lib/python3.9/site-packages (24.0)
    Collecting pip
      Downloading pip-26.0.1-py3-none-any.whl.metadata (4.7 kB)
    Downloading pip-26.0.1-py3-none-any.whl (1.8 MB)
       ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 448.2 kB/s eta 0:00:00
    Installing collected packages: pip

    Ora ho installato il package PyMySQL.

    ROUTER(Python)# pip install PyMySQL
    Collecting PyMySQL
      Downloading pymysql-1.1.2-py3-none-any.whl.metadata (4.3 kB)
    Downloading pymysql-1.1.2-py3-none-any.whl (45 kB)
    Installing collected packages: PyMySQL
    Successfully installed PyMySQL-1.1.2

    Non ho provato con altri package di gestione MySQL ma penso che ora si ha una maggiore compatibilità.

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.