Skip to main content

Libreria Python Consultazione DB GAzie

La consultazione del DB di GAzie tramite CRUD PHP Api. Questo documento vuol dare line guida Quick start per navigare nelle tabelle GAzie.

Installazione

  1. PIP:
    pip install py_gazie
    

Adattare GAzie a CRUD PHP API

Per adattare il database gazie a crud php api occorre inserire il campo 'id' come campo di primary key ove non vi sia.

Gli script utili per eseguirli.

Procedure Eseguire Su DB Gazie:

DELIMITER //

DROP PROCEDURE IF EXISTS AddIdPrimaryKeyToGazie //

CREATE PROCEDURE AddIdPrimaryKeyToGazie()
BEGIN
    -- =========================================================================
    -- 1. TUTTE LE DICHIARAZIONI (Devono stare in cima)
    -- =========================================================================
    DECLARE done INT DEFAULT FALSE;
    DECLARE current_table VARCHAR(255);
    DECLARE old_pk_columns VARCHAR(512);
    
    -- Cursore per escludere tabelle con 'id' o con qualsiasi altro AUTO_INCREMENT
    DECLARE table_cursor CURSOR FOR 
        SELECT t.TABLE_NAME 
        FROM information_schema.TABLES t
        WHERE t.TABLE_SCHEMA = DATABASE()
          AND t.TABLE_NAME LIKE 'gaz_%'
          AND NOT EXISTS (
              SELECT 1 
              FROM information_schema.COLUMNS c 
              WHERE c.TABLE_SCHEMA = DATABASE() 
                AND c.TABLE_NAME = t.TABLE_NAME 
                AND c.COLUMN_NAME = 'id'
          )
          AND NOT EXISTS (
              SELECT 1 
              FROM information_schema.COLUMNS c 
              WHERE c.TABLE_SCHEMA = DATABASE() 
                AND c.TABLE_NAME = t.TABLE_NAME 
                AND c.EXTRA LIKE '%auto_increment%'
          );

    -- L'handler deve essere l'ultima cosa dichiarata
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;


    -- =========================================================================
    -- 2. ISTRUZIONI ESEGUIBILI
    -- =========================================================================
    
    -- Creazione della tabella temporanea per il LOG
    DROP TEMPORARY TABLE IF EXISTS temp_log_alter_tables;
    CREATE TEMPORARY TABLE temp_log_alter_tables (
        id INT AUTO_INCREMENT PRIMARY KEY,
        eseguito_alle TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        tabella_modificata VARCHAR(255),
        query_eseguita TEXT
    );

    OPEN table_cursor;

    read_loop: LOOP
        FETCH table_cursor INTO current_table;
        
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Recupera dinamicamente le colonne che compongono l'attuale chiave primaria
        SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ', ')
        INTO old_pk_columns
        FROM information_schema.KEY_COLUMN_USAGE
        WHERE TABLE_SCHEMA = DATABASE()
          AND TABLE_NAME = current_table
          AND CONSTRAINT_NAME = 'PRIMARY';

        -- Se esiste una vecchia chiave primaria, procediamo
        IF old_pk_columns IS NOT NULL THEN
            
            SET @dynamic_sql = CONCAT(
                'ALTER TABLE `', current_table, '` ',
                'DROP PRIMARY KEY, ',
                'ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST, ',
                'ADD UNIQUE KEY `uk_', current_table, '_old_pk` (', old_pk_columns, ');'
            );

            -- Scrittura nel LOG
            INSERT INTO temp_log_alter_tables (tabella_modificata, query_eseguita) 
            VALUES (current_table, @dynamic_sql);

            -- Esecuzione della query
            PREPARE stmt FROM @dynamic_sql;
            EXECUTE stmt;
            DEALLOCATE PREPARE stmt;
            
        END IF;

    END LOOP;

    CLOSE table_cursor;
    
    -- 3. Stampa a schermo del risultato finale
    SELECT * FROM temp_log_alter_tables;
    
    -- Pulizia finale
    DROP TEMPORARY TABLE IF EXISTS temp_log_alter_tables;

END //

DELIMITER ;

Chiamare la Procedura

CALL AddIdPrimaryKeyToGazie();

Uso

1. Utilizzo della libreria

from py_gazie import GazieClient

base_url = "http://127.0.0.1:8082/modules/api/index.php"
api_key = "test-token"

client = GazieClient(
        base_url=base_url,
        api_key=api_key,
        timeout=15,
        default_company="001" # Azienda predefinita di lavoro
    )

Gestire le Tabelle

Classe GazieTable

Ci sono diversi esempi nella cartella examples/.

Faccio qui un ulteriore esempio di lettura:

from py_gazie import GazieClient

client = GazieClient(base_url="http://127.0.0.1:8082/modules/api/index.php", api_key="test-token", default_company="001")
    
product_table = client.get_table("product", company=1)
product_table.page(limit=5)
response = product_table.search()
print(response)

Release files for py-gazie 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-gazie 0.1.5
File Size Uploaded
py_gazie-0.1.5.tar.gz 62.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-gazie 0.1.5
File Interpreter ABI Platform
py_gazie-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 166.2 kB

Release files / py_gazie-0.1.5.tar.gz

Download URL py_gazie-0.1.5.tar.gz
Size 62.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bb7cb9442d49b5e772b8e28a3de0db84449711181d167dab9c4eecfcec3eecf5
BLAKE2b-256 checksum
How to use checksums
1bd3008b3e85e1359b1666279bb38912c41367e4f712ba45174aa2ba467b594b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / py_gazie-0.1.5-py3-none-any.whl

Download URL py_gazie-0.1.5-py3-none-any.whl
Size 103.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a7f4d0e38c4c139f7d4759d6a38e11e89a73e9190455df508a656f87a47388e1
BLAKE2b-256 checksum
How to use checksums
babcb5f1c02f2fcbd8974e4809554ea352604c97e4b8c1de55b7c3f33455260b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page