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 机器。我该如何解决这个错误?
我需要将以下代码升级为基于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 (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 …
我看到对 psycopg2 和 psycopg3 的引用,但没有明确的指导关于两者之间过渡的路线图。我发现随着时间的推移,出现了大量关于 psycopg2 的问题。
psycopg3 是否打算替代 psycopg2?这个版本有大量采用吗?
psycopg2 会有长期版本吗?是否有任何令人信服的理由选择一个版本而不是另一个版本?
我已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)
我的所有其他模块都工作正常
我被要求将程序从 psycopg2 迁移到 psycopg3。在这个程序中他们使用
with connection.cursor(cursor_factory=RealDictCursor) as cursor:
Run Code Online (Sandbox Code Playgroud)
获取随后转换为 JSON 文件的字典。
我的问题是 RealDictCursor 似乎是 psycopg2 的额外功能,因此在尝试将其用于 psycopg3 时会出现错误。psycopg3 中有其他使用方法吗?
尝试使用 psycopg2 库但没有成功。除了手动检查返回的数据之外,没有找到 psycopg3 的任何合适的替代方案
如何使用 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) 这不起作用:
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 创建数据库?
我正在使用 Psycopg3(不是 2!),但我不知道如何连接到远程 Postgres 服务器
psycopg.connect(connection_string)
Run Code Online (Sandbox Code Playgroud)
https://www.psycopg.org/psycopg3/docs/
谢谢!
嘿,我是数据库新手,为了方便起见,我决定使用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) psycopg3 ×10
python ×9
psycopg2 ×5
postgresql ×3
python-3.x ×2
apple-m1 ×1
aws-lambda ×1
ctypes ×1
database ×1
macos ×1
python-3.8 ×1
sqlalchemy ×1