bonjour


voici un code de connexion en base oracle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# coding: utf-8  
'''
 
'''
import cx_Oracle
 
class Oracle(object):
 
    def connect(self, username, password, hostname, port, servicename):
        """ Connection  à la database. """
 
        try:
            self.db = cx_Oracle.connect(username, password
                                , hostname + ':' + port + '/' + servicename)
        except cx_Oracle.DatabaseError as e:
            # Log error as appropriate
            raise
 
        # If the database connection succeeded create the cursor
        # we-re going to use.
        self.cursor = self.db.cursor()
 
    def disconnect(self):
        """
       Déconnectez-vous de la base de données. Si cela échoue, par exemple
        si l'instance de connexion n'existe pas, ignorez l'exception.
        """
 
        try:
            self.cursor.close()
            self.db.close()
        except cx_Oracle.DatabaseError:
            pass
 
    def execute(self, sql, bindvars=None, commit=False):
        """
        Exécutez toutes les instructions SQL transmises à la méthode;
        valider si spécifié. Ne spécifiez pas fetchall () ici comme
        l'instruction SQL n'est peut-être pas une sélection.
        bindvars est un dictionnaire de variables que vous transmettez pour exécuter.
        """
 
        try:
            self.cursor.execute(sql, bindvars)
        except cx_Oracle.DatabaseError as e:
            # Log error as appropriate
            raise
 
        # Only commit if it-s necessary.
        if commit:
            self.db.commit()
 
 
if __name__ == "__main__":
 
 
    oracle = Oracle.connect(  'username', 'password', 'hostname', 'port', 'servicename')
 
    try:
        # Pas de validation car vous n'avez pas besoin de valider DDL.
        oracle.execute('ddl_statements')
 
    # Assurez-vous que nous nous d�connectons toujours de la base de donn�es pour �viter
    # ORA-00018: nombre maximal de sessions d�pass�.
    finally:
        oracle.disconnect()
Je suis perplexe sur ce qu'il ce passe lors de l’exécution


et voici l'erreur
oracle = Oracle.connect( 'username', 'password', 'hostname', 'port', 'ervicename')
TypeError: connect() missing 1 required positional argument: 'servicename'
cette exemple vient de ce site https://stackoverflow.com/questions/...good-practices


pourquoi la fonction affiliée à cette classe réagit-elle étrangement comme si elle demandait 6 paramètres ?