about_txt = """\
The validator used in this example shows how the validator
can be used to transfer data to and from each text control
automatically when the dialog is shown and dismissed."""
class DataXferValidator(wx.PyValidator):
def __init__(self, data, key):
wx.PyValidator.__init__(self)
self.data = data
self.key = key
def Clone(self):
"""
Note that every validator must implement the Clone() method.
"""
return DataXferValidator(self.data, self.key)
## ====================================================================
## dired: /home/lfs/workcopy/ophtagnu/trunk/test/
## filename: connection.py
## Crée par: lfs
## Il s'agit d'un premier fichier de connection avec psycopg2
## L'utilisateur 'tester' est un user LINUX. Un role tester doit être crée
## #====================================================================
import psycopg2 as pg2
import sys
import psycopg2.extras
## Addition du chemin vers le module psycopg2/extras.py
sys.path.append("/usr/lib/python2.4/site-packages/psycopg2/extras.py")
print "le chemin d'accés au module est", sys.path
##------ Destruction de la table testertable ------
try:
curs.execute('DROP TABLE testertable')
except:
print "la table testertable n'existe pas"
##------ Création de la table testertable -----
curs.execute('CREATE TABLE testertable(name char(20), email char(20),
phone char(20))')
##------ Peuplement de la table
print type(NAMEDICT)
curs.executemany("""INSERT INTO testertable(name, email, phone) VALUES
(%(name)s, %(email)s, %(phone)s)""", NAMEDICT)
## ##------ Seletion des données de la table
## SQL="SELECT * FROM testertable"
## curs.execute(SQL)
## rows = curs.fetchall()
## print "le resultat de:", SQL , "est:"
## for line in rows:
## print line
##------ description du curseur
print "curs.description:", curs.description
print "curs.fileno() Return file descriptor associated to database
connection:",curs.fileno()
## Le commit se fait sur la connection pas sur le curseur
conn.commit()
curs.close()
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Desthuilliers
Bonjour
1/ J'arrive a créer un dictionnaire a partir du programme pyvalidator.py sous la forme d'une variable data
2/ J'arrive a remplir des enregistrements dans une table postgresql avec le programme connection.py
Maintenant j'aimerai apprendre a faire la jonction entre les deux.
Est-ce que quelqu'un a du temps pour m'expliquer cela?
Commence par transformer connection.py en un module digne de ce nom -en mettant le code dans des fonctions, pas au top-level, et en passant tes données de test aux fonctions.
quand un fichier .py est chargé dans l'interpréteur (machine virtuelle) Python, la variable 'globale' (au module - il n'y a pas de vraies globales en Python) '__name__' est positionnée avec soit le nom du module (quand le .py est importé depuis un script ou un autre module), soit avec '__main__' quand le fichier .py est utilisé comme script (ie: directement passé à l'interpréteur).
Donc, l'idiome canonique pour avoir un bout de code qui n'est exécuté *que* si le fichier .py est utilisé comme script est:
if __name__ == '__main__': # on est appelé comme script # code ici
## fichier.py --
C'est utile soit pour définir un fichier utilisable à la fois comme script et comme module, soit pour mettre des tests dans un module (même si ça ne vaut pas un framework de test unitaire).
(snip partie wxPython)
<hs> Généralement, on évite de poster tout un programme... </hs>
<hs id='2'> Attention, à partir de là je tape sur tout ce qui bouge !-) </hs>
import psycopg2 as pg2 import sys import psycopg2.extras
<hs> Pour des tests - ou pour poster sur usenet -, je te recommande SQLite. Ton problème n'est pas spécifique à Postgres, et tout le monde n'a pas postgres sur sa machine.... </hs>
## Addition du chemin vers le module psycopg2/extras.py sys.path.append("/usr/lib/python2.4/site-packages/psycopg2/extras.py") print "le chemin d'accés au module est", sys.path
Pas portable... mais tu t'en doutes, je suppose.
Et surtout tout à fait inutile (et possiblement trompeur), puisque: 1/ sys.path est une liste de chemins de *répertoires* 2/ si tu a pu importer psycopg2.extras, c'est qu'il est déjà dans ton path 3/ dans ce cas, son chemin est connu (c'est l'attribut __file__ du module)
1/ N'utilise *jamais* de clause except sans préciser explicitement quelle(s) type(s) d'exception tu attends.
2/ Pour demain sur un cahier propre, tu m'explique pourquoi il aurait été préférable ici de ne pas mettre de gestionnaire d'erreur *du tout*.
(hint: en cas d'exception lors de la connection, que se passe-t-il avec ton gestionnaire tel qu'il est, et que se passerait-il sans gestion d'erreur ?)
#curs = conn.cursor() curs = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) ## creation de la table TABLE='testertable'
##------ Destruction de la table testertable ------ try: curs.execute('DROP TABLE testertable') except: print "la table testertable n'existe pas"
cf plus haut
##------ Création de la table testertable ----- curs.execute('CREATE TABLE testertable(name char(20), email char(20), phone char(20))')
<hs sujet='sql'> Toujours définir un identifiant unique. </hs>
## ##------ Seletion des données de la table ## SQL="SELECT * FROM testertable" ## curs.execute(SQL) ## rows = curs.fetchall() ## print "le resultat de:", SQL , "est:" ## for line in rows: ## print line
plus simple:
curs.execute(SQL) for row in cursor: print row
Bonjour
1/ J'arrive a créer un dictionnaire a partir du programme pyvalidator.py
sous la forme d'une variable data
2/ J'arrive a remplir des enregistrements dans une table postgresql avec
le programme connection.py
Maintenant j'aimerai apprendre a faire la jonction entre les deux.
Est-ce que quelqu'un a du temps pour m'expliquer cela?
Commence par transformer connection.py en un module digne de ce nom -en
mettant le code dans des fonctions, pas au top-level, et en passant tes
données de test aux fonctions.
quand un fichier .py est chargé dans l'interpréteur (machine virtuelle)
Python, la variable 'globale' (au module - il n'y a pas de vraies
globales en Python) '__name__' est positionnée avec soit le nom du
module (quand le .py est importé depuis un script ou un autre module),
soit avec '__main__' quand le fichier .py est utilisé comme script (ie:
directement passé à l'interpréteur).
Donc, l'idiome canonique pour avoir un bout de code qui n'est exécuté
*que* si le fichier .py est utilisé comme script est:
if __name__ == '__main__':
# on est appelé comme script
# code ici
## fichier.py --
C'est utile soit pour définir un fichier utilisable à la fois comme
script et comme module, soit pour mettre des tests dans un module (même
si ça ne vaut pas un framework de test unitaire).
(snip partie wxPython)
<hs>
Généralement, on évite de poster tout un programme...
</hs>
<hs id='2'>
Attention, à partir de là je tape sur tout ce qui bouge !-)
</hs>
import psycopg2 as pg2
import sys
import psycopg2.extras
<hs>
Pour des tests - ou pour poster sur usenet -, je te recommande SQLite.
Ton problème n'est pas spécifique à Postgres, et tout le monde n'a pas
postgres sur sa machine....
</hs>
## Addition du chemin vers le module psycopg2/extras.py
sys.path.append("/usr/lib/python2.4/site-packages/psycopg2/extras.py")
print "le chemin d'accés au module est", sys.path
Pas portable... mais tu t'en doutes, je suppose.
Et surtout tout à fait inutile (et possiblement trompeur), puisque:
1/ sys.path est une liste de chemins de *répertoires*
2/ si tu a pu importer psycopg2.extras, c'est qu'il est déjà dans ton path
3/ dans ce cas, son chemin est connu (c'est l'attribut __file__ du module)
1/ N'utilise *jamais* de clause except sans préciser explicitement
quelle(s) type(s) d'exception tu attends.
2/ Pour demain sur un cahier propre, tu m'explique pourquoi il aurait
été préférable ici de ne pas mettre de gestionnaire d'erreur *du tout*.
(hint: en cas d'exception lors de la connection, que se passe-t-il avec
ton gestionnaire tel qu'il est, et que se passerait-il sans gestion
d'erreur ?)
#curs = conn.cursor()
curs = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
## creation de la table
TABLE='testertable'
##------ Destruction de la table testertable ------
try:
curs.execute('DROP TABLE testertable')
except:
print "la table testertable n'existe pas"
cf plus haut
##------ Création de la table testertable -----
curs.execute('CREATE TABLE testertable(name char(20), email char(20),
phone char(20))')
<hs sujet='sql'>
Toujours définir un identifiant unique.
</hs>
## ##------ Seletion des données de la table
## SQL="SELECT * FROM testertable"
## curs.execute(SQL)
## rows = curs.fetchall()
## print "le resultat de:", SQL , "est:"
## for line in rows:
## print line
1/ J'arrive a créer un dictionnaire a partir du programme pyvalidator.py sous la forme d'une variable data
2/ J'arrive a remplir des enregistrements dans une table postgresql avec le programme connection.py
Maintenant j'aimerai apprendre a faire la jonction entre les deux.
Est-ce que quelqu'un a du temps pour m'expliquer cela?
Commence par transformer connection.py en un module digne de ce nom -en mettant le code dans des fonctions, pas au top-level, et en passant tes données de test aux fonctions.
quand un fichier .py est chargé dans l'interpréteur (machine virtuelle) Python, la variable 'globale' (au module - il n'y a pas de vraies globales en Python) '__name__' est positionnée avec soit le nom du module (quand le .py est importé depuis un script ou un autre module), soit avec '__main__' quand le fichier .py est utilisé comme script (ie: directement passé à l'interpréteur).
Donc, l'idiome canonique pour avoir un bout de code qui n'est exécuté *que* si le fichier .py est utilisé comme script est:
if __name__ == '__main__': # on est appelé comme script # code ici
## fichier.py --
C'est utile soit pour définir un fichier utilisable à la fois comme script et comme module, soit pour mettre des tests dans un module (même si ça ne vaut pas un framework de test unitaire).
(snip partie wxPython)
<hs> Généralement, on évite de poster tout un programme... </hs>
<hs id='2'> Attention, à partir de là je tape sur tout ce qui bouge !-) </hs>
import psycopg2 as pg2 import sys import psycopg2.extras
<hs> Pour des tests - ou pour poster sur usenet -, je te recommande SQLite. Ton problème n'est pas spécifique à Postgres, et tout le monde n'a pas postgres sur sa machine.... </hs>
## Addition du chemin vers le module psycopg2/extras.py sys.path.append("/usr/lib/python2.4/site-packages/psycopg2/extras.py") print "le chemin d'accés au module est", sys.path
Pas portable... mais tu t'en doutes, je suppose.
Et surtout tout à fait inutile (et possiblement trompeur), puisque: 1/ sys.path est une liste de chemins de *répertoires* 2/ si tu a pu importer psycopg2.extras, c'est qu'il est déjà dans ton path 3/ dans ce cas, son chemin est connu (c'est l'attribut __file__ du module)
1/ N'utilise *jamais* de clause except sans préciser explicitement quelle(s) type(s) d'exception tu attends.
2/ Pour demain sur un cahier propre, tu m'explique pourquoi il aurait été préférable ici de ne pas mettre de gestionnaire d'erreur *du tout*.
(hint: en cas d'exception lors de la connection, que se passe-t-il avec ton gestionnaire tel qu'il est, et que se passerait-il sans gestion d'erreur ?)
#curs = conn.cursor() curs = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) ## creation de la table TABLE='testertable'
##------ Destruction de la table testertable ------ try: curs.execute('DROP TABLE testertable') except: print "la table testertable n'existe pas"
cf plus haut
##------ Création de la table testertable ----- curs.execute('CREATE TABLE testertable(name char(20), email char(20), phone char(20))')
<hs sujet='sql'> Toujours définir un identifiant unique. </hs>
## ##------ Seletion des données de la table ## SQL="SELECT * FROM testertable" ## curs.execute(SQL) ## rows = curs.fetchall() ## print "le resultat de:", SQL , "est:" ## for line in rows: ## print line