pyodbc problem

Martin Gregorie martin at address-in-sig.invalid
Tue Jul 27 14:02:37 EDT 2010


I have a small problem: I can't get pyodbc to connect to a PostgreSQL 
database. All it does is spit out a malformed error message. When I run 
this:

==============================================
import pyodbc

dsn = pyodbc.dataSources()
print "Data sources:    %s" % dsn

conn = pyodbc.connect(dsn="marchive")
print "ODBC connection: %s" % conn
==============================================

I get this:

==============================================
[kiwi at zappa python]$ python dsncheck.py
Data sources:    {'ma': 'PostgreSQL', 'marchive': 'PostgreSQL'}
Traceback (most recent call last):
  File "dsncheck.py", line 6, in <module>
    conn = pyodbc.connect(dsn="marchive")
pyodbc.Error: ('0', '[0] [unixODBC]c (0) (SQLDriverConnectW)')
==============================================

so the data source exists and is evidently found by connect(), whiuch 
seems unable to make sense of it.

The pgsql module works well, but I would prefer to use ODBC because its 
not so closely bound to a single RDBMS. unixODBC, which I understand 
underlies pyodbc, works OK too:

==============================================
[kiwi at zappa python]$ isql marchive marchive n/a
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select count(*) from address;
+---------------------+
| count               |
+---------------------+
| 32                  |
+---------------------+
SQLRowCount returns 1
1 rows fetched
SQL> quit
==============================================

Questions:
- Why does pyodbc blow up when its apparently trying to talk to unixODBC?
- What does this mean:
    pyodbc.Error: ('0', '[0] [unixODBC]c (0) (SQLDriverConnectW)')

I'm new to Python, though not to Linux, PostgreSQL, ODBC, C or Java. 
My rig and software:

Linux: 	    Fedora 12 Where I'm running Python and ODBC,
		      Lenovo Thinkpad R61i: Core Duo.
            Fedora 10 Where PostgreSQL is installed,
                      IBM NetVista: Pentium III. 
PostgreSQL: 8.3.8
Python:     2.6.2
pyodbc      2.1.5-3.fc12     ) By yum from RH repository
unixODBC    2.2.14-11.fc12   )


-- 
martin@   | Martin Gregorie
gregorie. | Essex, UK
org       |



More information about the Python-list mailing list