Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de connexion avec ma base mysql

2 réponses
Avatar
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=E8me tr=E8s 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 =3D "ludoreve" # nom de la base
user =3D "dbrancia" # utilisateur
passwd =3D "xxxxxxx" # mot de pass
host =3D "192.168.1.33" # adresse

# structure de la base de donn=E9es
dicoT =3D {"jeu":[('id_jeu' , "k", "cl=E9 primaire"),
('nom' , 25 , "Nom"),
('reference', 25 , "R=E9ference"),
('fabricant', 25 , "Fabricant"),
('categorie', 25 , "Cat=E9gorie"),
('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=E8ces"),
('Fournisseur', 200, "Fournisseur")]}

class GestionBD:
"""Mise en place et intefacage d'une base de donnes MySql"""
def __init__(self, dbName, user, passwd, host, port =3D3306):
"Etablissement de la connection"
try:
self.baseDonn =3D MySQLdb.connect(db =3D dbName,
user =3D user,
passwd =3D passwd,
host =3D host,
port =3D port)
except Exception, err:
print 'La connection avec la base de donn=E9es a =E9chou=E9 :\n
Erreur d=E9tect=E9e :\n%s' % err
self.echec =3D 1
else:
self.cursor =3D self.baseDonn.cursor()
self.echec =3D 0

def executerReq(self, req):
try:
self.cursor.execute(req)
except Exception, err:
print 'Requet SQL incorrecte :\n%s \n Erreur d=E9tect=E9e :\n
%s' % (req,err)
return 0
else:
return 1
def resultatReq(self):
return self.cursor.fetchall()



class MenuBar(Frame):
"""Barre de menus, d=E9roulante"""
def __init__(self, boss =3DNone ):
Frame.__init__(self, borderwidth =3D 2)

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

# Partie "d=E9roulante" :
me1 =3D Menu(fileMenu)
me1.add_command(label =3D'Connecter', underline =3D0, command =3D
boss.connecter)
me1.add_command(label =3D'Terminer', underline =3D0, command =3D
boss.quit)

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

class Application(Frame):
"""Application principale"""
def __init__(self, boss =3DNone):
Frame.__init__(self)
self.master.title('Fen=EAtre avec menus')
mBar =3D MenuBar(self)
mBar.pack()
self.can =3D Canvas(self, bg=3D'light grey', height=3D190,
width=3D250, borderwidth=3D2)
self.can.pack()
self.pack()

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

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

et le message re=E7ut lors de la selection connecter

python main.py
La connection avec la base de donn=E9es a =E9chou=E9 :
Erreur d=E9tect=E9e :
(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

2 réponses

Avatar
Alain Ketterlin
DGBR writes:

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.
Avatar
Mickaël Wolff
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