Forum Programmation.python pymssql / j'ai l'impression que ...

Posté par . Licence CC by-sa.
Tags : aucun
1
26
oct.
2016

Bonjour tout le monde,
J'ai un code ci-après, qui réalise la tâche compliqué de faire un TRUNCATE d'une table, en utilisant la bibliothèque pymssql
Ce code sort sans erreur, mais la table n'est pas vidée.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os, csv, pymssql

class MsSql:
    ''' Paramètres MsSql '''
    server = '10.0.3.35'
    user = 'sa'
    password = '713tbq42'

def requete():
    cnx = pymssql.connect(MsSql().server, MsSql().user, MsSql().password, 
as_dict=True)
    cur = cnx.cursor()
    cnx.commit()
    sqlrequest = ("TRUNCATE TABLE [MicheOD].[dbo].[MAPurgeD]")
    cur.execute(sqlrequest)
    cnx.close()


requete()

Qu'en pensez-vous?

  • # oups le commit

    Posté par . Évalué à 6.

    un commit AVANT d’exécuter la requête?
    ca serait pas mieux de le placer après le cur.execute() ???

  • # Pour élargir le sujet

    Posté par . Évalué à 1.

    Ton utilisation de la calsse me parait étrange à deux points de vue

    1. Ta classe ne sert qu'à stocker une information figée et n'en fait rien de plus. A moins qu'elle ne soit amenée à évoluer je pense qu'il serait plus naturel d'utiliser un dict
        sql_parms = {
            'server' : '10.0.3.35',
            'user' : 'sa',
            'password' : '713tbq42',
        }

    Pour ensuite l'utiliser ainsi

        cnx = pymssql.connect(sql_parms['server']...

    sachant que as_dict = True laisse imaginer qu'un dictionnaire pourrait immédiatement être utilisé, mais j en'ai pas regardé la doc

    1. Tu utilises la Classe en refabriquant un objet neuf à chaque fois que tu as besoin d'un paramètre, donc si ta classe devait évoluer (pour intégrer des méthodes par exemple), ou simplement pour être plus efficace en ressources/mémoire, ton programme devrait utiliser une instance de classe
        class MsSql:
            ''' Paramètres MsSql '''
            server = '10.0.3.35'
            user = 'sa'
            password = '713tbq42'
    
        def requete():
            mon_instance = MsSql()
            cnx = pymssql.connect(mon_instance.server, mon_instance.user, mon_instance.password, 
        as_dict=True)
            cur = cn...

    voila pour mes deux cts

    A +

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.