PostgresSQL et Tcl

 

INSTALLATION :

rpm -i "nom de l'archive" (Red Hat) cd / ; tar xvzf "nom de l'archive" (Slackware) ne pas oublier les paquets de support Tcl/Tk

PARAMETRAGE :

D'abord, déclarer les utilisateurs:

 $ su postgres
 # createuser utilisateur

Répondre Y aux questions vous demandant si l'utilisateur pourra créer des utilisateurs et des bases.

Vous venez de créer un DBA!!!

Note:

Pour pouvoir passer postgres, il peut être nécessaire de supprimer temporairement les '!!' qui remplacent le mot de passe sur l'user postgres dans /etc/shadow (passer root pour cela...) Il faut maintenant modifier /var/lib/pgsql/pg_hba.conf pour donner les droits d'accès à vos clients. Le fichier est abondemment commenté donc je vous laisse l'interpréter selon vos besoins. Si la sécurité n'est pas votre souci, ajoutez cette ligne pour permettre l'accès à tous par le réseau: host all 0.0.0.0 0.0.0.0 trust

CREER UNE BASE ET UNE TABLE

Logué sous un utilisateur valide, on peut maintenant créer une base: $ createdb mabase pour la peupler, le plus pratique est de rédiger un script en langage SQL du style:

 CREATE TABLE "carnet" (
         "nom" character varying(32),
         "phone" character varying(16),
         "ville" character varying(32));

On l'enregistre ensuite comme toto.sql, puis pour créer effectivement la table:

 $ psql mabase < toto.sql

Et voili !!! Nous avons maintenant une base PostgresSQL avec une table (vide pour le moment..)

METTRE EN PLACE ET TESTER LA CONNEXION

Pour acceder à postgreSQL, il faut la version de bibliothèque adaptée à la version de PostgreSQL et à votre version de Tcl, vous pouvez télécharger ici les 2 dll pour postgres 7 (fonctionne aussi avec 6.5) et Tcl/Tk 8.3 (les placer dans votre répertoire /windows/system)

Nous pouvons maintenant tester, donc taper les commandes suivantes sous tclsh:

 %load libpgtcl[[info sharedlibextension]]

ensuite se connecter à la base:

 %set dbHandle [pg_connect -conninfo "hostaddr=10.0.0.10 port=5432 dbname=mabase user=utilisateur"]

hostaddr est l'adresse de votre serveur, port le port TCP (5432 par défaut), dbname le nom de la base de données, user le nom de l'utilisateur. Il y a d'autres options à -conninfo, consultez la documentation pour en savoir plus... Si tout se passe bien, on doit récupérer un dbHandle qui nous permettra de gérer la suite des opérations... on essaie maintenant d'écrire des données dans la table

 %set resultHandle [pg_exec $dbHandle "INSERT INTO carnet (nom,phone,ville) VALUES ('Jean Dupont','286 386 486', 'TOULOUSE');"]

ici on récupère un resultHandle qui nous permet ensuite de savoir si l'opération s'est bien passée. On le teste avec:

 %pg_result $resultHandle -status

qui retourne en cas de succès PGRES_COMMAND_OK ou PGRES_FATAL_ERROR en cas d'erreur.

REMARQUES:

Dans un environnement multi-utilisateur, on prendra soin d'encadrer la chaîne SQL transmise à pg_exec par BEGIN TRANSACTION .......COMMIT;

Un autre détail important: un utilisateur miko crée une base. S'il ne donne pas les droits d'écriture aux autres utilisateurs, toutes leurs tentatives d'écrire dans une table (ou même un simple SELECT) retourneront PGRES_FATAL_ERROR. Le créateur de la base doit donner les autorisations avec la commande GRANT pour finir, il faut se déconnecter de la base avec

 %pg_disconnect $dbHandle

LIENS ET DOCUMENTATION

Plus d'infos sur PostgresSQL (en français ) : http://www.freenix.fr/unix/linux/HOWTO/PostgreSQL-HOWTO.html

Le guide utilisateur a été traduit ici http://www.linux-france.org/article/serveur/psql/guide-utilisateur

Une application complète en Tcl/Tk est peut-être incluse avec votre distribution : Pgaccess, sinon, je vous recommande chaudement de la télécharger: multilingue (par un menu préférences, connait même le Basque !!!), vous permet de créer, bases, utilisateurs, tables, requêtes (visuellement), formulaires de saisie, rapports, indispensable donc.

Version Windows : ftp://ftp.flex.ro/pub/pgaccess/pgaccess-0.98.7.zip

Version Unix : ftp://ftp.flex.ro/pub/pgaccess/pgaccess-0.98.7.tar.gz


Quelques nouveautés depuis la rédaction de cet article: la version 8 de PostgresSQL est sortie, elle tourne sous Windows 2000, XP et 2003 en natif, plus besoin de contorsions pour l'installer en tant que service. Elle est fournie avec le programme PgAdmin III qui vous permet de gérer les bases graphiquement. Que ces facilités ne vous empêchent pas, comme moi, de réfléchir!!!

Pgtcl en est, lui, à la version 1.5.2:

http://gborg.postgresql.org/project/pgtclng/projdisplay.php


Des infos supplémentaires (en anglais): http://wiki.tcl.tk/10548