gpt4 book ai didi

postgresql - 将 pyodbc 连接到 Postgres

转载 作者:行者123 更新时间:2023-11-29 11:13:18 43 4
gpt4 key购买 nike

尝试使用 pyodbc 连接到 Postgres。

我可以使用 isql 连接到数据库:

echo "select 1" | isql -v my-connector

返回:

+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select 1
+------------+
| ?column? |
+------------+
| 1 |
+------------+
SQLRowCount returns 1
1 rows fetched

但是当我尝试连接 pyodbc 时:

import pyodbc
con = pyodbc.connect("DRIVER={PostgreSQL Unicode}; DATABASE=<dbname>; UID=<username>; PWD=<password>; SERVER=localhost; PORT=5432;")

我收到以下错误:

pyodbc.Error: ('08001', '[08001] [unixODBC]connction string lacks some options (202) (SQLDriverConnect)')

obdc.ini 文件如下所示:

[my-connector]
Description = PostgreSQL connection to '<dbname>' database
Driver = PostgreSQL Unicode
Database = <dbname>
Servername = localhost
UserName = <username>
Password = <password>
Port = 5432
Protocol = 9.3
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =

odbcinst.ini 文件如下所示:

[PostgreSQL ANSI]
Description = PostgreSQL ODBC driver (ANSI version)
Driver = psqlodbca.so
Setup = libodbcpsqlS.so
Debug = 0
CommLog = 1
UsageCount = 1

[PostgreSQL Unicode]
Description = PostgreSQL ODBC driver (Unicode version)
Driver = psqlodbcw.so
Setup = libodbcpsqlS.so
Debug = 0
CommLog = 1
UsageCount = 1

注意事项:

  • Ubuntu 14.04
  • python 3
  • PostgreSQL 9.3

我过去曾使用 psycopg2 连接到 Postgres,但我现在的公司使用 Netezza、Postgres 和 MySQL。我想编写 1 个连接模块,并使用不同的驱动程序连接到不同的数据库。任何帮助将不胜感激。

-- 谢谢

最佳答案

因为您已经在 odbc.ini 中定义了一个有效的 DSN,您可以直接使用它:

con = pyodbc.connect("DSN=my-connector")

另外,郑重声明,连接字符串中的额外空格可能会混淆问题,因为这对我来说效果很好,至少在 Python 2.7 下是这样

import pyodbc
conn_str = (
"DRIVER={PostgreSQL Unicode};"
"DATABASE=postgres;"
"UID=postgres;"
"PWD=whatever;"
"SERVER=localhost;"
"PORT=5432;"
)
conn = pyodbc.connect(conn_str)
crsr = conn.execute("SELECT 123 AS n")
row = crsr.fetchone()
print(row)
crsr.close()
conn.close()

关于postgresql - 将 pyodbc 连接到 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34407531/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com