Outils pour utilisateurs

Outils du site


docs:dev:api:python:quickstart

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
docs:dev:api:python:quickstart [2024/02/27 15:20] floriandocs:dev:api:python:quickstart [2024/05/14 15:33] (Version actuelle) florian
Ligne 8: Ligne 8:
 Le module db_common propose des fonction utilitaires pour effectuer des requêtes sur la base de données. Le module db_common propose des fonction utilitaires pour effectuer des requêtes sur la base de données.
  
-=== Sélectionner plusieurs lignes ===+=== Lire plusieurs lignes ===
  
-Nous allons utiliser la fonction `dbgenericgetrows()dont la signature est la suivante:+Nous allons utiliser la fonction ''dbgenericgetrows()'' dont la signature est la suivante:
  
 <code python> <code python>
Ligne 29: Ligne 29:
 </code> </code>
  
-Exemple d'utilisation pour sélectionner toutes les lignes de la table `test`+Exemple d'utilisation pour sélectionner toutes les lignes de la table ''test''
  
 <code python> <code python>
Ligne 80: Ligne 80:
 </code> </code>
  
 +Un exemple maintenant en ajoutant des conditions
 +
 +<code python>
 +rows = db_common.dbgenericgetrows(
 + usession = gses,
 + itbl = "factfour",
 + icond = db_common.buildcondandor(
 + tbl = "factfour",
 + fields = ["FACTFOUR_CPPID", "FACTFOUR_DEPOTSAE"],
 + values = ["0", "1"]
 + )
 +)
 +
 +pprint.pprint(rows)
 +>>>
 +[{
 +        'FACTFOUR_CPPID': 0L,
 +        'FACTFOUR_DATE': datetime.datetime(2022, 6, 10, 11, 59, 55),
 +        'FACTFOUR_DATEDEPOTSAE': None,
 +        'FACTFOUR_DATEFACT': datetime.datetime(2016, 9, 29, 0, 0),
 +        'FACTFOUR_DEPOTSAE': 0,
 +        'FACTFOUR_FOURNISSEURID': 36L,
 +        'FACTFOUR_HT': 1350.0,
 +        'FACTFOUR_ID': 13L,
 +        'FACTFOUR_NUMFACTURE': 'QUAL_00000000003821',
 +        'FACTFOUR_TTC': 1620.0,
 +        'FACTFOUR_TVA': 270.0
 +    }
 +]
 +</code>
 +
 +<WRAP center round info 60%>
 +La fonction ''db_common.buildcondandor(...)'' qui est utilisée pour construire les conditions
 +ne gère que des conditions utilisant le même opérateur qui par défaut est l'opérateur ''=''.
 +</WRAP>
 +
 +=== Insérer une ligne ===
 +
 +On utilise la fonction ''dbgenericinsert()'' dont la signature est la suivante:
 +
 +<code python>
 +def dbgenericinsert(usession, itbl, iflds, ivalues, dbtype = None):
 + """
 + Generic function to insert a record in a system table and get its primary key.
 +
 + > ret = db_common.dbgenericinsert(session, "test", ["fld1", "fld2", "fldx"], [1, 2, 'foo'])
 + Execute query : insert into test (fld1,fld2,fldx) values (1,2,'foo');  ret contains new generated ID
 +
 + :type usession: session
 + :param usession: NCHP Session
 + :type itbl: string
 + :param itbl: table to fetch
 + :type iflds: list
 + :param iflds: fields to put values in
 + :type ivalues: list
 + :param ivalues: Values to put in fields
 + :type dbtype: string
 + :param dbtype: database type
 +
 + :rtype: long
 + :return: new ID of record, or 0 if insert failed.
 + """
 +</code>
 +
 +Voici un exemple:
 +
 +<code python>
 +new_rsid = db_common.dbgenericinsert(
 + usession = gses,
 + itbl = "client",
 + iflds = ["CLIENT_NUMERO", "CLIENT_NOM"],
 + ivalues = ["123456", "Client 123456"]
 +)
 +
 +if new_rsid <= 0:
 + print("Error code :{}, error msg: {}".format(gses.db.db_errorcode, gses.db.db_errormsg))
 +
 +</code>
 +
 +Il est important de tester le retour afin de s'assurer que l'insertion a bien été faite et sinon
 +on peut récupérer le code d'erreur et le message retourné par la base de données via ''gses.db.db_errorcode'' et ''gses.db.db_errormsg''
 ==== Classe sql_db ==== ==== Classe sql_db ====
  
Ligne 103: Ligne 184:
 result = gses.db.query("SELECT * FROM societycache;") result = gses.db.query("SELECT * FROM societycache;")
  
-with result: +if result is not None: 
-    for row in result: + with result: 
-        print(row)+ for row in result: 
 + print(row)
 </code> </code>
  
Ligne 262: Ligne 344:
 </code> </code>
  
-==== Créer une nouvelle version d'un fichier ====+==== Obtenir les fichiers d'une fiche ==== 
 + 
 +Nous avons besoin d'importer le module suivant 
 +<code python> 
 +import docpak 
 +</code> 
 + 
 +Nous avons ensuite besoin de deux informations: 
 +  * Le nom de la table documentaire. 
 +  * L'identifiant d'enregistrement de la fiche. 
 + 
 +<code python> 
 +fichiers = docpak.getfilesforrsid(gses, "contratsm", 81) 
 + 
 +print(fichiers) 
 +
 +    ('D:\\nchp\\var\\nchp\\instance\\EMDOM\\DEFTSA\\00000013\\ed\\4d\\4RGETML2.pdf','contrat_4201.pdf'
 +
 +</code> 
 + 
 +Le même appel avec l'option moreinfo=True 
 +<code python> 
 +fichiers = docpak.getfilesforrsid(gses, "contratsm", 81) 
 + 
 +print(fichiers) 
 + 
 +[('D:\\nchp\\var\\nchp\\instance\\EMDOM\\DEFTSA\\00000013\\ed\\4d\\4RGETML2.pdf', 
 +  'contrat_4201.pdf',  
 +  22864L, #Identifiant du fichier 
 +  'ed4d2b8b04b3b1861a450b35210114c75ebae4dc', #Empreinte md160 du fichier 
 +  'application/pdf', #Type mime 
 +  1L #Rang du fichier 
 + ) 
 +
 + 
 +</code> 
 + 
 +===== Scripts COLD ===== 
 + 
 +==== Lire un fichier d'état (scriptfile) ==== 
  
docs/dev/api/python/quickstart.1709047248.txt.gz · Dernière modification : de florian