Skip to main content

"Client de bases de données pour le cadriciel Scrippy"

Project description

Build Status License Language

Scrippy, mon ami le scrangourou

scrippy_db

Client de bases de données générique pour le cadriciel Scrippy.

Prérequis

Modules Python

Liste des modules nécessaires

Les modules listés ci-dessous seront automatiquement installés.

  • psycopg2-binary
  • cx-Oracle

Installation

Manuelle

git clone https://codeberg.org/scrippy/scrippy-db.git
cd scrippy-db.git
sudo python3 -m pip install -r requirements.txt
make install

Avec pip

sudo pip3 install scrippy-db

Utilisation

Le module scrippy_db.db propose l'objet Db dont l'objectif est d'offrir les fonctionnalités liées à l'utilisation d'une base de données.

La connexion à une base de données peut se faire soit en fournissant directement les paramètres de connexion (username, host, database, port, password) au constructeur soit en fournissant le nom du service sur lequel se connecter.

Le paramètre db_type permet de spécifier le type de base de données (postgres ou oracle). La valeur par défaut de ce paramètre est postgres.

L'exécution d'une requête est effectuée avec la méthode Db.execute() qui accepte les paramètres suivants:

  • request: La requête en elle même (obligatoire)
  • params: Les paramètres de la requête dans l'ordre exact de leur apparition au sein de la requête (optionnel)
  • verbose: Booléen indiquant si la requête et son résultat doivent apparaître dans le log. Le niveau de log doit positionné a minima à debug.

Une requête peut comporter un ou plusieurs paramètres variables nécessitant l'adaptation de la requête à ces paramètres.

Dans un soucis de sécurité certaines pratiques sont strictement à proscrire et d'autres doivent impérativement être appliquées.

Les paramètres d'une requête doivent être passés dans un tuple à la méthode Db.execute() qui se chargera de vérifier la validité des vos paramètres.

N'essayez jamais de gérer vous même l'interpolation des paramètres à l'intérieur de la requête

Exemple

Récupération de données et mise à jour conditionnelle de la base.

from scrippy_db import db

db_user = "harry.fink"
db_password = "dead_parrot"
db_host = "flying.circus"
db_port = "5432"
db_base = "monty_python"
db_type = "postgres"

app_name = "spanish_inquisition"
app_version = "0.42.0"
app_status = "Deployed"
date = datetime.datetime.now().strftime('%Y%m%d %H:%M:%S')

with db.Db(username=db_user,
           host=db_host,
           port=db_port,
           database=db_base,
           password=db_password,
           db_type=db_type) as database:
  # Vérification de l'état de l'application
  req = """select app_status, app_version, date
            from apps
            where app_name=%s;"""
  params = (app_name, )
  current_status = database.execute(req, params, verbose=True)
  if current_status != None:
    # L'application est déjà enregistrée, on affiche son statut actuel
    # On met à jour son statut
    params = {"app_name": app_name,
              "app_version": app_version,
              "app_status": app_status,
              "date": datetime.datetime.now().strftime('%Y%m%d %H:%M:%S')}
    req = """insert into apps
                (app_name, app_version, app_status, date)
                values (%(app_name)s, %(app_version)s, %(app_status)s, %(date)s);"""
    result = database.execute(req, params, verbose=True)
  else:
    # L'application n'a jamais été enregistrée, on enregistre l'application et son statut.
    req = """insert into apps
            (app_name, app_version, app_status, date)
            values (%(app_name)s, %(app_version)s, %(app_status)s, %(date)s);"""
    params = (app_name, app_version, app_status, date)
    result = database.execute(req, params)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scrippy-db-1.1.74.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

scrippy_db-1.1.74-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file scrippy-db-1.1.74.tar.gz.

File metadata

  • Download URL: scrippy-db-1.1.74.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for scrippy-db-1.1.74.tar.gz
Algorithm Hash digest
SHA256 d263205b8cab2ea15d2892972f41a76b08b619f722c7f7c3884b4dcd5509ce3c
MD5 0a8f60d5e0b4654245750902ea578aa3
BLAKE2b-256 5a2cecba3201b27e142d2b8b7e996d3308c583f6216e45be0057033ef90ff288

See more details on using hashes here.

File details

Details for the file scrippy_db-1.1.74-py3-none-any.whl.

File metadata

  • Download URL: scrippy_db-1.1.74-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for scrippy_db-1.1.74-py3-none-any.whl
Algorithm Hash digest
SHA256 b942693f60aaa7db84fde4651dc932c639dd99444b682150b712694b216d7703
MD5 db944c115d4f69863ebadfe1a451430a
BLAKE2b-256 9c8a08337692029e665006e777aca933014c4608833ccb4f9e9299bcc31f9141

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page