Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Python] Problema pyodbc e query

    ciao!

    ho sviluppato un'applicazione in python che si connette ad un db oracle ed esegue alcune query.
    sul pc in locale funziona alla perfezione.
    su un altro server, sempre nella rete locale, pure.
    poi l'ho installato anche su un altro server, sempre nella rete locale, ma non c'è verso di fargli fare questa query.
    in tutti i casi ho installato python 3.10 e la stessa versione delle librerie.

    questo il codice completo dello script:
    codice:
    from MonitorFile import MonitorFile
    from utils import *
    from datetime import date
    
    def articoli():
        dd = date.today()
        today = dd.strftime('%Y-%m-%d')
        cmd = """ 
                SELECT TRIM(MAT_ANAG.NPAM)                                                                       NPAM,
                       TRIM(SUBSTR(MAT_ANAG.CODINT, 1, 8))                                                       MODELLO,
                       TRIM(FN_B2B_DESC_MAT('XXL', ' ', SUBSTR(MAT_ANAG.CODINT, 1, 8)))                          DESCRIZ,
                       TRIM(SUBSTR(CODINT, 10, 4))                                                               COLORE,
                       TRIM(FN_B2B_DESC_ATRR_AMM('XXL', 'A-VAR', SUBSTR(MAT_ANAG.CODINT, 10, 4)))                COL_DESC,
                       TRIM(SUBSTR(MAT_ANAG.CODINT, 15))                                                         TG,
                       TRIM(FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'PACCHETTO'))                            PACCHETTO,
                       TRIM(FN_B2B_DESC_ATRR_AMM('XXL', 'PACCHETTO',
                       FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'PACCHETTO')))      PACC_DESC,
                       TRIM(FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'A-COMPOS'))                             COMPOSIZIONE,
                       TRIM(FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'MERCEOL'))                              GRPMERC,
                       TRIM(FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'FAMIGLIA'))                             FAMIGLIA,
                       TRIM(FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'BRIEFING'))                             BRIEFING,
                       TRIM(FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'A-CLASSCOMB'))                          VOCEDOG,
                       TRIM(MAT_SINONIMI.SINONIMO)                                                               EAN,
                       TRIM(SUBSTR(MAT_ANAG.CODINT, 1, 4))                                                       COLL,
                       TRIM(FN_B2B_TROVA_ART_ATTR('XXL', MAT_ANAG.NPAM, 'A-PNTG'))                               PT,
                       FN_B2B_PREZZO_ARTICOLO('XXL', 'LF', '1616', 1, '01', TRIM(SUBSTR(MAT_ANAG.CODINT, 1, 8))) COSTO,
                       FN_B2B_PREZZO_ARTICOLO('XXL', 'OF', '1616', 1, '01', TRIM(SUBSTR(MAT_ANAG.CODINT, 1, 8))) RETAIL,
                       FN_B2B_PREZZO_ARTICOLO('XXL', 'OF', '1616', 2, '01', TRIM(SUBSTR(MAT_ANAG.CODINT, 1, 8))) VETRINA,
                       FN_B2B_PREZZO_ARTICOLO('XXL', 'OF', '2020', 1, '01', TRIM(SUBSTR(MAT_ANAG.CODINT, 1, 8))) LELLO,
                       FN_B2B_BRAND(TRIM(SUBSTR(MAT_ANAG.CODINT, 1, 8)))                                         BRAND
                FROM MAT_ANAG
                         INNER JOIN MAT_ATTRIB_ESTESI MODVARTG ON MODVARTG.NPAM = MAT_ANAG.NPAM
                         INNER JOIN MAT_SINONIMI ON MAT_SINONIMI.NPAM = MAT_ANAG.NPAM
                WHERE MAT_ANAG.DITMAT = 'XXL'
                  AND MAT_ANAG.FVL = ' '
                  AND MAT_SINONIMI.DITMAT = 'XXL'
                  AND MAT_SINONIMI.FVL = ' '
                  AND MAT_SINONIMI.TIPO = 'B'
                  AND MODVARTG.DITMAT = 'XXL'
                  AND MODVARTG.CODICE_ATTR = 'A-MODVARTG'
        """
    
        # cmd += "AND MAT_ANAG.CODINT LIKE 'C231%'"
        cmd += "AND TO_CHAR(MAT_ANAG.TSTP_MOD, 'YYYYMMDD') BETWEEN TO_CHAR(SYSDATE - 2, 'YYYYMMDD') AND TO_CHAR(SYSDATE, 'YYYYMMDD')"
        # cmd += " AND TO_CHAR(MAT_ANAG.TSTP_MOD, 'yyyy-mm-dd') = '" + today + "'"
        # cmd += " AND TO_CHAR(MAT_ANAG.TSTP_MOD, 'yyyy-mm-dd') BETWEEN '2022-03-01' AND '2022-06-14'"
    
        create_csv('articoli.csv', cmd, 'csv_articoli')
    
    def colori():
        cmd = "SELECT valore, desc1024 FROM ATTREST_AMMESSI WHERE ditta_attr = 'XXL' AND codice_attr = 'A-VAR';"
        create_csv('colori.csv', cmd, 'csv_articoli')
    
    def taglie():
        cmd = "SELECT valore, desc1024 FROM ATTREST_AMMESSI WHERE ditta_attr = 'XXL' AND codice_attr = 'A-PNTG';"
        create_csv('taglie.csv', cmd, 'csv_articoli')
    
    def get_articoli():
        # colori()
        # taglie()
        articoli()
    
        # event_handler = MonitorFile('Articoli')
        # event_handler.crea_semaforo()
        # event_handler.run_observer()
    
    if __name__ == '__main__':
        get_articoli()
    questo l'errore che mi da:
    codice:
    Traceback (most recent call last):
      File "articoli.py", line 68, in <module>
        get_articoli()
      File "articoli.py", line 61, in get_articoli
        articoli()
      File "\articoli.py", line 48, in articoli
        create_csv('articoli.csv', cmd, 'csv_articoli')
      File "utils.py", line 45, in create_csv
        rows = cursor.execute(cmd)
    pyodbc.ProgrammingError: ('42S22', '[42S22] [Oracle][ODBC][Ora]ORA-00904: "FN_B2B_BRAND": invalid identifier\n\x00⩲ѤūびŮ\x01ŴդżʃƂŤɼ\x04\x03ū㩲Ѥū䁳Ů\x01Ŵ٤ɼʃƂŤͼ\x04\x03ū䩲ݤū偳Ů\x01ŴࡤͼʃƂѼ।Ŷ奲Ŵ\u0a64ѼʃƂ|żɼͼѼզS\u0b29牎\t\x00៩ (904) (SQLExecDirectW)')
    
    Process finished with exit code 1
    non ho proprio idee....

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    La query si esegue se lanciata direttamente sul db?

  3. #3
    Quote Originariamente inviata da clasku Visualizza il messaggio
    La query si esegue se lanciata direttamente sul db?
    si si esegue, ma il problema era un altro.

    in pratica sul mio pc il DNS di connessione (impostato direttamente nel sistema nel pannello ODBC) punta ad un server.
    mentre su quel server il DNS puntava ad un server di test.
    qualcuno aveva fatto la modifica senza dirmelo, ed io ho buttato una giornata in tentativi inutili

  4. #4
    Utente bannato
    Registrato dal
    Oct 2022
    Messaggi
    3
    How do I run a SQL query in Python Pyodbc?



    Steps to Connect Python to SQL Server using pyodbc

    • Step 1: Install pyodbc. To start, install the pyodbc package which will be used to connect Python to SQL Server. ...
    • Step 2: Retrieve the server name. Next, retrieve your server name. ...
    • Step 3: Connect Python to SQL Server.








  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Quote Originariamente inviata da banganaej Visualizza il messaggio
    How do I run a SQL query in Python Pyodbc?
    [...]
    Your answer is not relevant to the issue explained in this discussion.
    Furthermore, the forum uses the Italian language.

    Usa la lingua italiana e accertati di aver letto accuratamente la problematica prima di rispondere.

    Per questa e altre norme da seguire, consiglio la lettura attenta del nostro Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.