繁体   English   中英

无法使用 pyodbc 连接到 PostgreSQL

[英]Unable to connect to PostgreSQL using pyodbc

我是pyodbc的新手。

我无法使用以下代码连接到 PostgreSQL -

cnxn = pyodbc.connect('Driver={PostgreSQL35W};Server=dummy.cag.com;Port=5432;Database=postgres;Uid=postgres;Pwd=postgres;') 

它抛出“pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')”错误。

我已经将 DataSource 配置为在此处输入图像描述

甚至测试连接成功。

在这方面寻求帮助。

完整代码 - 它只是一个简单的程序单元 -

import pyodbc as pyodbc

def perform_db_operation():
  
    cnxn = pyodbc.connect('Driver={PostgreSQL35W};Server=dummy.cag.com;Port=5432;Database=postgres;Uid=postgres;Pwd=postgres;')
    select_cursor = cnxn.cursor()
    sql_select_stmt = "SELECT * from public.gluetable212a"
    select_cursor.execute(sql_select_stmt)
    result_set = select_cursor.fetchall()

    for current_record in result_set:
        passenger_id = current_record[0]
        age = current_record[1]
        fare = current_record[2]
        ticket = current_record[3]
        # insert_cursor.execute(sql_insert_stmt, emp_name, emp_id)
    print(passenger_id, age, fare, ticket)
    select_cursor.close()
    cnxn.commit()
    cnxn.close()


perform_db_operation()

运行控制台日志 -

C:\Users\KarthikDeepan.Gujulu\PycharmProjects\MyProj\venv\Scripts\python.exe C:/Users/KarthikDeepan.Gujulu/PycharmProjects/MyProj/ICOMP/PyODBCTrail1.py
Traceback (most recent call last):
  File "C:/Users/KarthikDeepan.Gujulu/PycharmProjects/MyProj/ICOMP/PyODBCTrail1.py", line 38, in <module>
    perform_db_operation()
  File "C:/Users/KarthikDeepan.Gujulu/PycharmProjects/MyProj/ICOMP/PyODBCTrail1.py", line 16, in perform_db_operation
    cnxn = pyodbc.connect('Driver={PostgreSQL ANSI};Data Source=decheqaperf01v.asg.com;Port=5432;Database=postgres;Uid=postgres;Pwd=postgres;')
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Process finished with exit code 1

@GordThompson,您的评论帮助我找到了问题所在。 我已经下载并安装了驱动程序 x64 版本,那时pyodbc.drivers()没有显示 PostgresDriver 作为驱动程序之一。 然后我下载了 x86 版本,它现在开始显示驱动程序列表(“ODBC 数据源 32 位”应用程序和pyodbc.drivers()输出)并且程序单元按预期工作。

控制台 OUTPUT:

['Driver da Microsoft para arquivos texto (*.txt; *.csv)', 'Driver do Microsoft Access (*.mdb)', 'Driver do Microsoft dBase (*.dbf)', 'Driver do Microsoft Excel(*.xls)', 'Driver do Microsoft Paradox (*.db )', 'Microsoft Access Driver (*.mdb)', 'Microsoft Access-Treiber (*.mdb)', 'Microsoft dBase Driver (*.dbf)', 'Microsoft dBase-Treiber (*.dbf)', 'Microsoft Excel Driver (*.xls)', 'Microsoft Excel-Treiber (*.xls)', 'Microsoft ODBC for Oracle', 'Microsoft Paradox Driver (*.db )', 'Microsoft Paradox-Treiber (*.db )', 'Microsoft Text Driver (*.txt; *.csv)', 'Microsoft Text-Treiber (*.txt; *.csv)', 'SQL Server', 'PostgreSQL ANSI', 'PostgreSQL Unicode']
10 employee1 10 address1
20 employee2 20 address2
30 employee3 30 address3
40 employee4 40 address4
50 employee5 50 address5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM