【发布时间】: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