OVH Cloud OVH Cloud

[adodb & postgresql] Connexion empêchée par autocommit manquant

4 réponses
Avatar
kurdal
Bonjour =E0 tous.

Un probl=E8me de connexion =E0 PostgreSQL depuis python 2.3.4 m'am=E8ne.
Je voudrais utiliser adodb (adodb-py101) pour acc=E9der =E0 une base sous=
=20
PostgreSQL 8.0.1 sous windows.
J'ai install=E9 psycopg-1.99.13.win32-py2.3.exe .

La connexion directe (sans adodb) passe:
import psycopg
db =3D psycopg.connect("dbname=3Ddb user=3Dusr password=3Dpswd")
id =3D 'toto'
cursor =3D db.cursor()
qu =3D "SELECT * FROM table WHERE champ =3D'%s'"
cursor.execute(qu % id)
r =3D cursor.fetchone()
print r[0]

J'ai mon r=E9sultat !

Avec adodb:
import adodb
conn =3D adodb.NewADOConnection('postgres')
conn.Connect('host=3D127.0.0.1 user=3Dusr password=3Dpswd dbname=3Ddb port=
=3D
5432')
cursor =3D conn.Execute('select * from table')
while not cursor.EOF:
=09print cursor.fields
cursor.MoveNext()
cursor.Close()
conn.Close()

J'obtient des messages d'erreurs d=E8s la connexion:
Quand je met le nom de la machine (=E0 la place de 127.0.0.1), j'ai
Traceback (most recent call last):
File "toto2.py", line 14, in ?
conn.Connect('host=3D127.0.0.1 user=3Dusr password=3Dpswd dbname=3Ddb por=
t=3D
5432')
....
self._conn =3D psycopg.connect(dsn)
psycopg.OperationalError: could not connect to server: Connection=20
refused
=09Is the server running on host "127.0.0.1" and accepting TCP/IP=20
connections on port 5432 ?

Ou pire:
...
File "C:\...\Lib\site-packages\adodb_postgres.py", line 47, in _connect
self._conn.autocommit(1)
AttributeError: 'psycopg._psycopg.connection' object has no attribute=20
'autocommit'


Comme je vais devoir me coltiner des bases de diff=E9rents types, adodb me=
=20
plait assez, et python est un langage tr=E8s cool.

En clair: HELP !!
Merci d'avance.

--=20
"L'or est l=E0 o=F9 il se trouve", Stephenson, Cryptonomicon ..

4 réponses

Avatar
Jean-michel
Bonsoir,

Je ne sais pas si ça va t'avancer beaucoup, mais personnellement j'utilise
adodb-py110 avec mysql et mssql, sans pb aucun, aussi avec python 2.3.4. et
sous windows (2K+xp). Je n'ai jamais essayé avec psyco.
Je me rappelle que c'est assez sensible au niveau de la version; ton pb
viens peut-être de là.
Il me semble aussi que ta syntaxe de connexion n'est pas correcte. Un
exemple qui fonctionne:
self.co = adodb.NewADOConnection('mysql')
self.co.Connect('localhost','root','pwd','bdd')

A part ça, le côté universel de adodb est *très* sympa. On change juste la
connexion, et ça marche ! Il est juste dommage que toutes les possibilités
qui existent avec php ne soient pas implémentées pour python. Ce n'est pas
gênant pour des besoins courants.
Evidemment, on est limité au tronc commun des possibilités des BDD, ce qui
est parfois assez frustrant. Mais bon, on ne peut pas tout avoir !

A+
jm

PS: Laure, hélas ! Où elle se trouble ?

"kurdal" a écrit dans le message de news:

Bonjour à tous.

Un problème de connexion à PostgreSQL depuis python 2.3.4 m'amène.
Je voudrais utiliser adodb (adodb-py101) pour accéder à une base sous
PostgreSQL 8.0.1 sous windows.
J'ai installé psycopg-1.99.13.win32-py2.3.exe .

La connexion directe (sans adodb) passe:
import psycopg
db = psycopg.connect("dbnameÛ user=usr password=pswd")
id = 'toto'
cursor = db.cursor()
qu = "SELECT * FROM table WHERE champ ='%s'"
cursor.execute(qu % id)
r = cursor.fetchone()
print r[0]

J'ai mon résultat !

Avec adodb:
import adodb
conn = adodb.NewADOConnection('postgres')
conn.Connect('host7.0.0.1 user=usr password=pswd dbnameÛ port 5432')
cursor = conn.Execute('select * from table')
while not cursor.EOF:
print cursor.fields
cursor.MoveNext()
cursor.Close()
conn.Close()

J'obtient des messages d'erreurs dès la connexion:
Quand je met le nom de la machine (à la place de 127.0.0.1), j'ai
Traceback (most recent call last):
File "toto2.py", line 14, in ?
conn.Connect('host7.0.0.1 user=usr password=pswd dbnameÛ port 5432')
....
self._conn = psycopg.connect(dsn)
psycopg.OperationalError: could not connect to server: Connection
refused
Is the server running on host "127.0.0.1" and accepting TCP/IP
connections on port 5432 ?

Ou pire:
...
File "C:...Libsite-packagesadodb_postgres.py", line 47, in _connect
self._conn.autocommit(1)
AttributeError: 'psycopg._psycopg.connection' object has no attribute
'autocommit'


Comme je vais devoir me coltiner des bases de différents types, adodb me
plait assez, et python est un langage très cool.

En clair: HELP !!
Merci d'avance.

--
"L'or est là où il se trouve", Stephenson, Cryptonomicon ..
Avatar
Ahmed MOHAMED ALI
Comme je vais devoir me coltiner des bases de différents types, adodb me
plait assez, et python est un langage très cool.


Jettez aussi un oeil sur sqlobject qui permet de se connecter à des bases
différentes
très simplement.


"kurdal" wrote in message
news:
Bonjour à tous.

Un problème de connexion à PostgreSQL depuis python 2.3.4 m'amène.
Je voudrais utiliser adodb (adodb-py101) pour accéder à une base sous
PostgreSQL 8.0.1 sous windows.
J'ai installé psycopg-1.99.13.win32-py2.3.exe .

La connexion directe (sans adodb) passe:
import psycopg
db = psycopg.connect("dbnameÛ user=usr password=pswd")
id = 'toto'
cursor = db.cursor()
qu = "SELECT * FROM table WHERE champ ='%s'"
cursor.execute(qu % id)
r = cursor.fetchone()
print r[0]

J'ai mon résultat !

Avec adodb:
import adodb
conn = adodb.NewADOConnection('postgres')
conn.Connect('host7.0.0.1 user=usr password=pswd dbnameÛ port 5432')
cursor = conn.Execute('select * from table')
while not cursor.EOF:
print cursor.fields
cursor.MoveNext()
cursor.Close()
conn.Close()

J'obtient des messages d'erreurs dès la connexion:
Quand je met le nom de la machine (à la place de 127.0.0.1), j'ai
Traceback (most recent call last):
File "toto2.py", line 14, in ?
conn.Connect('host7.0.0.1 user=usr password=pswd dbnameÛ port 5432')
....
self._conn = psycopg.connect(dsn)
psycopg.OperationalError: could not connect to server: Connection
refused
Is the server running on host "127.0.0.1" and accepting TCP/IP
connections on port 5432 ?

Ou pire:
...
File "C:...Libsite-packagesadodb_postgres.py", line 47, in _connect
self._conn.autocommit(1)
AttributeError: 'psycopg._psycopg.connection' object has no attribute
'autocommit'


Comme je vais devoir me coltiner des bases de différents types, adodb me
plait assez, et python est un langage très cool.

En clair: HELP !!
Merci d'avance.

--
"L'or est là où il se trouve", Stephenson, Cryptonomicon ..

Avatar
Jean-michel
Jettez aussi un oeil sur sqlobject qui permet de se connecter à des bases
différentes
très simplement.


Je viens de passer 10 mn dans la doc.
Ca a l'air vraiment bien. Le concept d'abstraction de SQL en Objets semble
très puissant, et c'est un produit vraiment fait pour python, au contraire
de adodb qui (me semble-t-il) vient de php.

Merci pour l'info.
jm

Avatar
Ahmed MOHAMED ALI
Je viens de passer 10 mn dans la doc.
Ca a l'air vraiment bien. Le concept d'abstraction de SQL en Objets semble
très puissant, et c'est un produit vraiment fait pour python, au contraire
de adodb qui (me semble-t-il) vient de php.

Merci pour l'info.


De rien.Si t'as besoin d'aide, il y a le newsgroup
gmane.comp.python.sqlobject ( mais c'est en anglais)
Ahmed

"Jean-michel" wrote in message
news:d2ccat$7f3$
Jettez aussi un oeil sur sqlobject qui permet de se connecter à des
bases


différentes
très simplement.


Je viens de passer 10 mn dans la doc.
Ca a l'air vraiment bien. Le concept d'abstraction de SQL en Objets semble
très puissant, et c'est un produit vraiment fait pour python, au contraire
de adodb qui (me semble-t-il) vient de php.

Merci pour l'info.
jm