标签: psycopg3

导入 psycopg3 时出现导入错误“没有可用的 pq 包装器”

pip install psycopg[binary]我按照文档在 venv 上安装了 pyscopg3 ,但仍然收到导入错误:

Exception has occurred: ImportError
no pq wrapper available.
Attempts made:
- couldn't import psycopg 'c' implementation: No module named 'psycopg_c'
- couldn't import psycopg 'binary' implementation: DLL load failed while importing pq: The specified module could not be found.
- couldn't import psycopg 'python' implementation: libpq library not found
Run Code Online (Sandbox Code Playgroud)

我正在运行 Windows 10 机器。我该如何解决这个错误?

python psycopg3

33
推荐指数
2
解决办法
2万
查看次数

创建基于psycopg3的SQLAlchemy引擎

我需要将以下代码升级为基于psycopg版本 3 的等效代码:

import psycopg2
from sqlalchemy import create_engine

engine = create_engine('postgresql+psycopg2://', creator=connector)
Run Code Online (Sandbox Code Playgroud)

这个 psycopg2 URL 很有魅力,但是:

import psycopg # v3.1
from sqlalchemy import create_engine

engine = create_engine('postgresql+psycopg://', creator=connector)
Run Code Online (Sandbox Code Playgroud)

(我也尝试过“psycopg3”这个词但没有成功)

返回:

Traceback (most recent call last):

  File "/tmp/ipykernel_1032556/253047102.py", line 1, in <cell line: 1>
    engine = create_engine('postgresql+psycopg://', creator=connector)

  File "<string>", line 2, in create_engine

  File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)

  File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/engine/create.py", line 534, in create_engine
    entrypoint = u._get_entrypoint()

  File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/engine/url.py", line 661, in _get_entrypoint …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy psycopg2 psycopg3

15
推荐指数
2
解决办法
8328
查看次数

如何让 ctypes find_library 找到 libpq?

我正在 Python (3.9.9) 中构建一个简单的数据库接口,并使用 psycopg (3.0.7) 连接到我的 Postgres (14.1) 数据库。直到最近,这个应用程序的开发都是在 Linux 上进行的,但现在我在 M1 Mac mini 上使用 macOS Monterey。这似乎给 psycopg 广泛使用的 ctypes 带来了一些麻烦。我收到的错误如下:

ImportError: no pq wrapper available.
Attempts made:
- couldn't import psycopg 'c' implementation: No module named 'psycopg_c'
- couldn't import psycopg 'binary' implementation: No module named 'psycopg_binary'
- couldn't import psycopg 'python' implementation: libpq library not found
Run Code Online (Sandbox Code Playgroud)

基于psycopg源码,这是 ctypes 无法 util.find_library libpq.dylib 的错误。Postgres 安装为 Postgres.app,这意味着 libpq.dylib 的路径是

/Applications/Postgres.app/Contents/Versions/14/bin/lib

我尝试将其添加到 PATH 中,但没有成功。然后我创建了一个指向 /usr/local/lib 中路径的符号链接,但(不出所料)它也不起作用。然后我做了一些挖掘,发现这个问题描述了同样的问题。我不是 macOS …

python macos ctypes apple-m1 psycopg3

9
推荐指数
1
解决办法
5377
查看次数

psycopg3 是 psycopg2 的分支,还是替代升级?

我看到对 psycopg2 和 psycopg3 的引用,但没有明确的指导关于两者之间过渡的路线图。我发现随着时间的推移,出现了大量关于 psycopg2 的问题。

psycopg3 是否打算替代 psycopg2?这个版本有大量采用吗?

psycopg2 会有长期版本吗?是否有任何令人信服的理由选择一个版本而不是另一个版本?

python psycopg2 psycopg3

7
推荐指数
1
解决办法
2254
查看次数

无法导入模块“lambda_function”:没有名为“psycopg2._psycopg aws lambda 函数”的模块

我已psycopg2使用此命令在我的包文件夹中安装了:

pip install --target ./package psycopg2 # Or
pip install -t ./package psycopg2
Run Code Online (Sandbox Code Playgroud)

现在psycopg2模块在我的包中,我已经创建了 zip 并将其上传到 AWS lambda 中。

在我本地的 sprint 中工作正常,但在 AWS lambda 上却无法工作。

它向我显示错误

{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'psycopg2._psycopg'",
  "errorType": "Runtime.ImportModuleError",
  "stackTrace": []
}
Run Code Online (Sandbox Code Playgroud)

我的 lambda 代码是

import psycopg2

def lambda_handler():
   print('hello')
Run Code Online (Sandbox Code Playgroud)

我的所有其他模块都工作正常

python psycopg2 aws-lambda python-3.8 psycopg3

6
推荐指数
1
解决办法
1万
查看次数

从 psycopg3 SELECT 查询返回 json/字典

我被要求将程序从 psycopg2 迁移到 psycopg3。在这个程序中他们使用

with connection.cursor(cursor_factory=RealDictCursor) as cursor:
Run Code Online (Sandbox Code Playgroud)

获取随后转换为 JSON 文件的字典。

我的问题是 RealDictCursor 似乎是 psycopg2 的额外功能,因此在尝试将其用于 psycopg3 时会出现错误。psycopg3 中有其他使用方法吗?

尝试使用 psycopg2 库但没有成功。除了手动检查返回的数据之外,没有找到 psycopg3 的任何合适的替代方案

python postgresql psycopg3

6
推荐指数
1
解决办法
1700
查看次数

Psycopg3:使用命名参数将列表作为 IN 语句的参数传递

如何使用 psycopg 的命名参数将列表传递给查询中的IN语句?

例子:

cur.execute("""
        SELECT name
        FROM users
        WHERE id IN (%(ids)s)
        """,
        {"ids": [1, 2, 3]})
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下错误消息:

psycopg.errors.UndefinedFunction: operator does not exist: integer = smallint[]

HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

python psycopg3

6
推荐指数
1
解决办法
1271
查看次数

如何使用psycopg3创建数据库?

这不起作用:

conn = psycopg.connect(dsn)
conn.execute("CREATE DATABASE test")
Run Code Online (Sandbox Code Playgroud)

以下是有关 psycopg3 中交易的文档:https://www.psycopg.org/psycopg3/docs/basic/transactions.html

对于这个问题最重要的说法是:

与 psql 相比,Psycopg 的行为可能看起来令人惊讶:默认情况下,任何数据库操作都会启动一个新事务。

这是一个相当长的页面,但它没有告诉任何地方如何在不启动新事务的情况下执行语句。有一个autocommit=True论据connect(),但它也不起作用。

无论我做什么,我总是会收到此错误:

psycopg.errors.ActiveSqlTransaction: CREATE DATABASE cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)

如何使用 psycopg3 创建数据库?

python psycopg2 python-3.x psycopg3

3
推荐指数
1
解决办法
1912
查看次数

如何使用 psycopg3 连接到远程数据库

我正在使用 Psycopg3(不是 2!),但我不知道如何连接到远程 Postgres 服务器

psycopg.connect(connection_string)
Run Code Online (Sandbox Code Playgroud)

https://www.psycopg.org/psycopg3/docs/

谢谢!

python postgresql psycopg2 psycopg3

2
推荐指数
1
解决办法
3629
查看次数

获取 psycopg.ProgrammingError:传递数据库参数时连接选项“数据库”无效

嘿,我是数据库新手,为了方便起见,我决定使用Postgresql我正在使用名为Psycopg的数据库的 Python 编程语言的适配器,我按照 Psycopg2 的安装教程进行操作,但遇到错误,所以我决定安装 psycopg3 并且安装成功!但是当我传递database参数时出现以下错误:

Traceback (most recent call last):
  File "C:\Users\Aditya\AppData\Local\Programs\Python\Python310\lib\site-packages\psycopg\conninfo.py", line 97, in _parse_conninfo
    return pq.Conninfo.parse(conninfo.encode())
  File "psycopg_binary\\pq/conninfo.pyx", line 30, in psycopg_binary.pq.Conninfo.parse
psycopg.OperationalError: invalid connection option "database"


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\Aditya\Desktop\Aditya\TGbot\dbhelper.py", line 3, in <module>
    conn = psycopg.connect(
  File "C:\Users\Aditya\AppData\Local\Programs\Python\Python310\lib\site-packages\psycopg\connection.py", line 561, in connect
    conninfo = make_conninfo(**params)
  File "C:\Users\Aditya\AppData\Local\Programs\Python\Python310\lib\site-packages\psycopg\conninfo.py", line 56, in make_conninfo
    _parse_conninfo(conninfo)
  File "C:\Users\Aditya\AppData\Local\Programs\Python\Python310\lib\site-packages\psycopg\conninfo.py", line 99, …
Run Code Online (Sandbox Code Playgroud)

database postgresql python-3.x psycopg3

-1
推荐指数
1
解决办法
2921
查看次数