将 pyodbc 连接到 Postgres

2024-02-22

尝试使用 pyodbc 连接到 Postgres。

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

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

Returns:

+---------------------------------------+
| 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)')

odbc.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

Notes:

  • 乌班图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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pyodbc 连接到 Postgres 的相关文章

随机推荐

  • 尝试使用类型族来消除具有灵活上下文的重叠实例时出错

    我试图在我正在使用的类型的类型参数上使用一些相当复杂的条件来定义类型类的实例 并且认为一个有用的方法是声明一个封闭的类型系列 该系列在我定义的实例之间进行选择 不幸的是 我根本无法让这个想法发挥作用 因为 GHC 抱怨这些实例是重复的 这是
  • grails-app/utils 目录

    我刚刚注意到的存在grails app utils目录 我从未在任何文档中看到过它 或在项目中使用过 它是在运行时默认创建的create app 知道你应该在那里放什么吗 实用程序 代码是一个明显的猜测 但似乎应该放在src dir 谢谢
  • 扩展 JavaScript 字符串中的 ${var} 引用 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 学习一些超越普通 JavaScript 的东西 我正在读的书告诉我这样的说法 let someVar Happy console
  • 从R中的矩阵中删除对角线元素

    如何使用 R 从矩阵 L 中删除对角元素 diagL 我尝试使用以下内容 subset L select diag L or subset L select c diag L 但我得到了 0 个号码 R 编程语言 我更喜欢C 它更容易拼写
  • 带有事务的 SourcePollingChannelAdapter

    我想使用 SourcePollingChannelAdapter 来实现轮询时需要事务传播 以便在发生错误时回滚所有操作 setTransactionSynchronizationFactory 方法没有注释 非常感谢你的帮助 在 XML
  • Kendo UI 参考在 Razor 视图中不起作用

    我正在尝试创建 Telerik 网格视图 但是当我去参考剑道时它无法识别它 当我尝试引用剑道时 Visual Studio 给出错误 这是代码 Html Kendo Grid 下面是错误 System Web Mvc HtmlHelper
  • MongoDB 的插入安全模式有多安全?

    我正在开发一个项目 其中包含一些重要数据 这意味着如果灯或服务器出现故障 我们不会丢失任何数据 我们使用 MongoDB 作为数据库 我想确保插入后我的数据位于数据库中 如果未插入一个元素 则回滚整个批次 我知道 Mongo 背后的理念是我
  • 在 JCuda 中加载多个模块不起作用

    在jCuda中 可以将cuda文件加载为PTX或CUBIN格式并调用 启动 global 来自 Java 的函数 内核 考虑到这一点 我想使用 JCuda 开发一个框架来获取用户的 device 函数在一个 cu文件在运行时加载并运行它 我
  • log4j2.properties 文件的更改导致 elasticsearch 失败

    我已经安装了elasticsearch 6 6 0 和CentOS 7 我想添加一些用于旋转日志的属性 例如大小为50MB的旋转和压缩 但是 如果我向 etc elasticsearch log4j2 properties 文件添加更多配置
  • LINQ 分组依据表达式语法

    我有一个与此类似的 T SQL 查询 SELECT r id r name count FROM RoomBindings GROUP BY r id r name 我想使用 LINQ 做同样的事情 到目前为止我到达这里 var rooms
  • 链接错误“未定义引用‘__gxx_personality_v0’”和g++[重复]

    这个问题在这里已经有答案了 可能的重复 链接上未定义符号 gxx personality v0 https stackoverflow com questions 203548 undefined symbol gxx personalit
  • 带有母版页的 ASP.Net Web 表单中的 JQuery

    我有一个名为 CoursesPage aspx 的页面 它有一个母版页 在 CoursesPage aspx 中 我在课程名称上使用自动完成 jquery 以便更好地搜索 这是我的脚本代码
  • 如何从命令行启动的 GUI 应用程序写入 StdOut?

    我正在 Delphi 7 中编写一个标准的 Windows 应用程序 如果我正在编写控制台应用程序 我可以调用以下命令来输出到命令行或输出文件 writeln Some info 如果我从从命令行启动的标准 GUI 应用程序执行此操作 则会
  • Rails send_file 不播放 mp4

    我有一个 Rails 应用程序 可以保护上传的视频 将它们放入私人文件夹中 现在我需要播放这些视频 当我在控制器中执行以下操作时 def show video Video find params id send file video ful
  • 使用 Json 比较 C# 对象

    我想比较两个对象而不实现 Equals 方法 以这种方式比较它们的缺点是什么 1 用Json序列化它们 2 结果对比 thanks 以这种方式比较它们有什么缺点 失去速度 将对象转换为 JSON 字符串然后比较它们比通过属性等于属性要慢得多
  • SUM() 基于与 SELECT 不同的条件

    您好 有没有一种方法可以根据与 SELECT 语句其余部分不同的条件进行 SUM total points 计算 所以我想要为 非常感谢您的帮助 SELECT members member id members teamname SUM t
  • 没有这样的桶:/usr/local/Cellar/git

    我已经为此苦苦挣扎了几个小时 我在 Mac 上使用 Yosemite 我安装了自制软件 并且使用 git 就很好 我尝试做 git add i我得到了这个错误 无法在 INC 中找到 Git pm INC 包含 所以我按照这里的说明进行操作
  • E:软件包“libssl1.1”没有安装候选者

    sudo apt get install libssl1 1 正在阅读包裹清单 完成 构建依赖树 完成 读取状态信息 完成 软件包 libssl1 1 不可用 但被另一个软件包引用 这可能意味着该包丢失 已过时或 只能从其他来源获得 E 软
  • 回收和赋值函数(`split<-`)

    有人可以解释一下这一行 R 代码是如何工作的吗 split dat f lt lapply split dat f max 我以为这只是一个回收规则 但实际上我无法理解 数据示例 dat lt c 1 2 3 100 200 300 f l
  • 将 pyodbc 连接到 Postgres

    尝试使用 pyodbc 连接到 Postgres 我可以使用 isql 连接到数据库 echo select 1 isql v my connector Returns Connected sql statement help tablen