Problème de connexion avec ma base mysql

Le
DGBR
Je suis entrain d'essayer python avec mysql

Vraiment pas facile de trouver de la doc sur le sujet..
Mais bon je tombe sur un problème très basic

Voici mon code

# -*- coding: Latin-1 -*-

from Tkinter import *
import MySQLdb, sys


class Glob:
""" Espace de noms pour les variables et fonction <pseudo-
globales>"""
dbName = "ludoreve" # nom de la base
user = "dbrancia" # utilisateur
passwd = "xxxxxxx" # mot de pass
host = "192.168.1.33" # adresse

# structure de la base de données
dicoT = {"jeu":[('id_jeu' , "k", "clé primaire"),
('nom' , 25 , "Nom"),
('reference', 25 , "Réference"),
('fabricant', 25 , "Fabricant"),
('categorie', 25 , "Catégorie"),
('commentaire', "b" , "Commentaire"),
('infos_fabricant', "t", "Infos Fabricant"),
('inventaire', "b", "Inventaire"),
('date_achat', "d", "Date Achat"),
('prix', "i", "Prix"),
('id_ludo', "i", "Numero ludo"),
('Nbrepiece', "i", "Nombre de pièces"),
('Fournisseur', 200, "Fournisseur")]}

class GestionBD:
"""Mise en place et intefacage d'une base de donnes MySql"""
def __init__(self, dbName, user, passwd, host, port =3306):
"Etablissement de la connection"
try:
self.baseDonn = MySQLdb.connect(db = dbName,
user = user,
passwd = passwd,
host = host,
port = port)
except Exception, err:
print 'La connection avec la base de données a échoué :
Erreur détectée :%s' % err
self.echec = 1
else:
self.cursor = self.baseDonn.cursor()
self.echec = 0

def executerReq(self, req):
try:
self.cursor.execute(req)
except Exception, err:
print 'Requet SQL incorrecte :%s Erreur détectée :
%s' % (req,err)
return 0
else:
return 1
def resultatReq(self):
return self.cursor.fetchall()



class MenuBar(Frame):
"""Barre de menus, déroulante"""
def __init__(self, boss =None ):
Frame.__init__(self, borderwidth = 2)

#### Menu <Fichier> ####
fileMenu = Menubutton(self, text ='Fichier')
fileMenu.pack(side =LEFT)

# Partie "déroulante" :
me1 = Menu(fileMenu)
me1.add_command(label ='Connecter', underline =0, command =
boss.connecter)
me1.add_command(label ='Terminer', underline =0, command =
boss.quit)

# Intergration du menu :
fileMenu.configure( menu = me1)

class Application(Frame):
"""Application principale"""
def __init__(self, boss =None):
Frame.__init__(self)
self.master.title('Fenêtre avec menus')
mBar = MenuBar(self)
mBar.pack()
self.can = Canvas(self, bg='light grey', height=190,
width=250, borderwidth=2)
self.can.pack()
self.pack()

def connecter(self):
## self.can.delete(ALL)
bd = GestionBD(Glob.dbName, Glob.user,Glob.passwd, Glob.host)
if bd.echec():
print "Echec sur la base de donnee"

if __name__ == '__main__':
app = Application()
app.mainloop()

et le message reçut lors de la selection connecter

python main.py
La connection avec la base de données a échoué :
Erreur détectée :
(2003, "Can't connect to MySQL server on '192.168.1.33' (111)")
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1413, in __call__
return self.func(*args)
File "main.py", line 90, in connecter
if bd.echec():
TypeError: 'int' object is not callable
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Ketterlin
Le #22385461
DGBR
class GestionBD:
def __init__(self, dbName, user, passwd, host, port 306):


[...]
self.echec = 1


[...]

class Application(Frame):


[...]
def connecter(self):


[...]
if bd.echec():
print "Echec sur la base de donnee"

File "main.py", line 90, in connecter
if bd.echec():
TypeError: 'int' object is not callable



Sûrement des parenthèses en trop.

-- Alain.
Mickaël Wolff
Le #22388531
Le 22/07/2010 18:37, DGBR a écrit :
File "main.py", line 90, in connecter
if bd.echec():
TypeError: 'int' object is not callable



Pourtant le message est clair : echec est un int. En tout cas, c'est
ce que tu lui assigne aux lignes 42 et 45. Du coup, echec n'est ni une
fonction, ni un functor, et ne peut pas être appelée (is not callable).

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Publicité
Poster une réponse
Anonyme