Page 1 sur 1

[RESOLU] Valeurs ne change pas [MySQLdb / Python]

Posté : ven. 9 janv. 2015 18:59
par EVOTk
Bonjour,

j'ai un code qui me cause des soucis !
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="*******", # your password
db="chaupi") # name of the data base


def verifconfig():
global tempjour
global tempnuit
global tempnuitinf
global tempnuitsup
global tempjourinf
global tempjoursup
global delta
global forcage

cur = db.cursor()
cur.execute("SELECT temp_jour, temp_nuit, delta, forcage FROM config WHERE ID='1'")
config = cur.fetchone()

tempjour = float(config[0])
tempnuit = float(config[1])
delta = float(config[2])
forcage = config[3]

db.close()

while True:
verifconfig()
print forcage

time.sleep(10)
Quand jexecute ceci, j'ai le message suivant :
Traceback (most recent call last):
File "testbombesql.py", line 132, in <module>
verifconfig()
File "testbombesql.py", line 116, in verifconfig
cur.execute("SELECT temp_jour, temp_nuit, delta, forcage FROM config WHERE ID='1'")
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 155, in execute
charset = db.character_set_name()
_mysql_exceptions.InterfaceError: (0, '')
j'ai fouillé sur internet et certain parler de db.close(), je l'ai donc enlever pour voir et la plus d'erreur mais la valeur forcage qui est recuperée ne change jamais meme si elle est modifiée dans la base de donnée !

Une idée ?

Re: Valeurs ne change pas [MySQLdb / Python]

Posté : lun. 12 janv. 2015 08:32
par Manfraid
Salut,

essaye déjà d'ouvrir la connexion a ta base de donnée dans ta fonction, je ne pense pas que ce soit ça, mais on ne sait jamais

Re: Valeurs ne change pas [MySQLdb / Python]

Posté : lun. 12 janv. 2015 16:51
par EVOTk
Manfraid a écrit :Salut,

essaye déjà d'ouvrir la connexion a ta base de donnée dans ta fonction, je ne pense pas que ce soit ça, mais on ne sait jamais
Hey bah oui, c'est sa ! il va donc falloir que j'ouvre et ferme la connexion a chaque fois :/

J'ai vu qu'il etait possible de metre les info dans un fichier, dans se cas cela me semble judicieux !

Code : Tout sélectionner

db = MySQLdb.connect(read_default_file="~/.my.cnf")
http://fr.wikibooks.org/wiki/Programmat ... nn%C3%A9es

Re: [RESOLU] Valeurs ne change pas [MySQLdb / Python]

Posté : mar. 13 janv. 2015 05:49
par Manfraid
je ne savais même pas que c'était possible de mettre la config dans un fichier. et pour la connexion c'est normal, les site web en fond autant vers le propre base de donnée chaque page ouvre une connexion puis la ferme et surtout multiplier par le nombre de visiteurs :)

Re: [RESOLU] Valeurs ne change pas [MySQLdb / Python]

Posté : mar. 13 janv. 2015 09:52
par vague nerd
Bonjour.
les site web en fond autant vers le propre base de donnée
Par forcément. Cela dépend de l'architecture applicative retenue. Si l'accès base de donnée est crucial, il n'est pas rare qu'un processus (ou plutôt un pool de processus) soit tout le temps connecté à une base, en keep alive. Les processus clients s'adressent alors au processus dédié base de donnée (qui peut alors avoir recours à des caches, prioriser les accès à la base, ..., et surtout ne pas la surcharger).

Un site de vente en ligne à fort trafic ne peut tout simplement pas se permettre d'ouvrir une connexion à la base de donnée pour chaque client ! Ils vont même jusqu’à avoir recours à des bases intermédiaires (et le site dit "ok" au client bien avant d'avoir enregistrer la commande dans le système central).
surtout multiplier par le nombre de visiteurs
Je n'ai pas compris le rapport...

Cdt.

Re: [RESOLU] Valeurs ne change pas [MySQLdb / Python]

Posté : mar. 13 janv. 2015 10:15
par Manfraid
c'est vrai mais je ne parlais pas de site à très fort trafic, et ne cherche pas il n'y a pas de rapport, juste mal réveillé lol

Re: [RESOLU] Valeurs ne change pas [MySQLdb / Python]

Posté : mar. 13 janv. 2015 10:18
par vague nerd
juste mal réveillé lol
:D