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édentes Révision précédente
Prochaine révision
Révision précédente
docs:dev:api:python:quickstart [2024/02/27 15:20]
florian
docs: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: 2024/02/27 15:20 par florian