我在PC1上安装了Postgres,并且正在使用PC2连接到数据库.我已经修改了设置,以便本地网络可以访问PC1上的Postgres.

在PC2上,我执行以下操作:

import pandas as pd, pyodbc
from sqlalchemy import create_engine
z1 = create_engine('postgresql://postgres:***@192.168.40.154:5432/myDB')
z2 = pd.read_sql(fr"""select * from public."myTable" """, z1)

我得到的错误是:

File "C:\Program Files\Python311\Lib\site-packages\pandas\io\sql.py", line 1405, in execute
    return self.connectable.execution_options().execute(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'OptionEngine' object has no attribute 'execute'

在PC1上运行相同的代码时,我没有收到任何错误.

我刚刚注意到,只有在从数据库中阅读时才会发生这种情况.如果我做to_sql次,它就会起作用.PC2上似乎没有,因为如果我使用localhost:5432,而不是try 192.168.40.154:5432,我得到了相同的错误.

编辑: 之后的修改起作用了,但不确定为什么.有人能告诉我这是什么原因吗?

from sqlalchemy.sql import text
connection = connection = z1.connect()
stmt = text("SELECT * FROM public.myTable")
z2 = pd.read_sql(stmt, connection)

发帖主题:Re:Kolibrios

PC1:
pd.__version__
'1.5.2'
import sqlalchemy
sqlalchemy.__version__
'1.4.46'


PC2:
pd.__version__
'1.5.3'
import sqlalchemy
sqlalchemy.__version__
'2.0.0'

这是否意味着如果我更新PC1上的包,一切都会崩溃?

推荐答案

我今天遇到了同样的问题,基本上是SQLalChemy版本,如果你看一下文档here SQLalChemy版本2.0.0是几天前发布的,所以Pandas 没有更新,目前我认为解决方案是坚持使用1.4.x版本.

Postgresql相关问答推荐

PostgreSQL:`row_alias为null`且`row_alias不是null`返回值不一致

在SqlalChemy中转义动态CamelCase场

使用PythonPolar在PostgreSQL中存储

我可以使用 SQLAlchemy 映射数据类创建 Postgres `GENERATED ALWAYS AS` 列吗?

JOOQ:数据库版本早于 COCKROACHDB 支持的方言:13.0.0

如何使用 Grafana 测量 PostgreSQL 中的复制

postgres 中的模式前缀,被调用元素的范围

全文搜索(Postgres)与Elastic search

brew 程序更新恼人的错误信息

在 Postgresql 中获取星期几

Flask-SQLAlchemy db.session.query(Model) 与 Model.query

Rails 3:在 Postgres 支持的 ActiveRecord 中使用 json 作为列类型时出现迁移错误

在函数中返回字段作为插入结果

Docker - Postgres 和 pgAdmin 4:Connection refused

获取 PostgreSQL 中当前正在运行的查询的参数

在 PostgreSQL 中表示Sparse稀疏数据

如何将参数值添加到 pgadmin sql 查询?

判断materialized视图的上次刷新时间

在 postgresql 中对使用 array_agg 创建的文本聚合进行排序

在 Postgres 9.0+ 中使用 PL/pgSQL 在表上循环