【问题标题】:No attribute "execute" error on connecting to PostgreSQL连接到 PostgreSQL 时没有属性“执行”错误
【发布时间】:2023-01-30 09:00:09
【问题描述】:

我在 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 就可以了。如果我使用 localhost:5432 而不是尝试 192.168.40.154:5432,PC2 上似乎缺少了,我得到了同样的错误。

编辑: 修改后有效但不确定原因。有人可以告诉我这可能是什么原因。

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

编辑2:

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 和 Pandas?添加信息作为问题的更新。

标签: pandas postgresql python-3.11 postgresql-15


【解决方案1】:

sqlalchemy.sql.text() 部分不是问题。将 connection() 添加到 connect_engine() 指令似乎已经成功了。

【讨论】:

  • 我尝试了连接和文本,它们都需要存在才能使代码正常工作。
【解决方案2】:

我今天遇到了同样的问题,基本上是 SQLalchemy 版本,如果你看看文档here,SQLalchemy 2.0.0 版是几天前发布的,所以 pandas 没有更新,现在我认为解决方案是有效的使用 1.4.x 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2013-10-26
    • 2014-09-09
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多